Go Academy · Ders

encoding/xml

XML ile çalışın

2. ders / 413 adım

encoding/xml, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

XML ile Çalışma

XML, eski sistemlerde ve yapılandırmalarda hâlâ yaygın olan, ayrıntılı ve etiket tabanlı bir biçimdir. Go'nun encoding/xml paketi, json paketini örnek alarak XML'i serileştirir ve serileştirmeden çıkarır.

XML'e Marshal

xml.Marshal, bir Go değerini XML baytlarına dönüştürür.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	Name string
	Age  int
}

func main() {
	b, _ := xml.Marshal(User{"Ann", 30})
	fmt.Println(string(b))
}

XML Etiketleri

xml etiketi, json etiketlerinin JSON anahtarlarını kontrol etmesine benzer şekilde öğe adlarını kontrol eder.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	Name string "xml:\"name\""
}

func main() {
	b, _ := xml.Marshal(User{"Ann"})
	fmt.Println(string(b))
}

XMLName ile Kök Öğe

XMLName adlı xml.Name türündeki bir alan, kök öğenin adını belirler.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	XMLName xml.Name "xml:\"user\""
	Name    string   "xml:\"name\""
}

func main() {
	b, _ := xml.Marshal(User{Name: "Ann"})
	fmt.Println(string(b))
}

Öznitelikler

Bir alanı alt öğe yerine XML özniteliği olarak oluşturmak için etikete ,attr ekleyin.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	XMLName xml.Name "xml:\"user\""
	ID      int      "xml:\"id,attr\""
	Name    string   "xml:\"name\""
}

func main() {
	b, _ := xml.Marshal(User{ID: 7, Name: "Ann"})
	fmt.Println(string(b))
}

XML'i Unmarshal Etme

xml.Unmarshal, XML baytlarını etiketlerle öğe adlarını eşleştirerek bir işaretçiye ayrıştırır.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	Name string "xml:\"name\""
}

func main() {
	var u User
	xml.Unmarshal([]byte("<User><name>Bob</name></User>"), &u)
	fmt.Println(u.Name)
}

İç İçe Öğeler

İç içe yapılar, iç içe XML öğelerine karşılık gelerek bir ağaç oluşturur.

package main

import (
	"encoding/xml"
	"fmt"
)

type Address struct {
	City string "xml:\"city\""
}
type User struct {
	Name    string  "xml:\"name\""
	Address Address "xml:\"address\""
}

func main() {
	b, _ := xml.Marshal(User{"Ann", Address{"Rome"}})
	fmt.Println(string(b))
}

Biçimli XML

xml.MarshalIndent, okunabilirlik için çıktıyı girintili biçimlendirir.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	Name string "xml:\"name\""
}

func main() {
	b, _ := xml.MarshalIndent(User{"Ann"}, "", "  ")
	fmt.Println(string(b))
}

Yinelenen Öğeler

Bir dilim alanı, her öğe için bir tane olmak üzere yinelenen XML öğeleri dizisine dönüşür.

package main

import (
	"encoding/xml"
	"fmt"
)

type List struct {
	Items []string "xml:\"item\""
}

func main() {
	b, _ := xml.Marshal(List{Items: []string{"a", "b"}})
	fmt.Println(string(b))
}

JSON ve XML Karşılaştırması

API'ler birbirine benzer: Marshal, Unmarshal, MarshalIndent ve yapı etiketleri. XML, öznitelikler ile XMLName kök kavramını ekler. Yeni API'ler için JSON'u, eski sistemler için XML'i tercih edin.

Başlık Bildirimi

xml.Header sabiti, eksiksiz belgeler için çıktının başına ekleyebileceğiniz standart XML bildirim dizesini içerir.

package main

import (
	"encoding/xml"
	"fmt"
)

func main() {
	fmt.Print(xml.Header)
}

Hızlı Kontrol

Bir xml yapı etiketindeki ,attr seçeneği ne yapar?

Özet

encoding/xml:

  • xml.Marshal / Unmarshal, json API'sini örnek alır
  • xml etiketleri öğeleri adlandırır; ,attr öznitelik oluşturur
  • XMLName kökü belirler; dilimler öğeleri yineler
Başlamak ücretsiz

Yapay zeka eğitmeniyle Go öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“encoding/xml” dersi ücretsiz mi?

Evet — “encoding/xml” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“encoding/xml” dersinde ne öğreneceğim?

XML ile çalışın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“encoding/xml” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. encoding/json Tekrarı
  2. encoding/xml
  3. encoding/csv
  4. gob ve İkili Kodlama
← Go Academy Sayfasına Dön