encoding/xml
Mit XML arbeiten
encoding/xml ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Mit XML arbeiten
XML ist ein ausführliches, tagbasiertes Format, das in Legacy-Systemen und Konfigurationsdateien noch häufig verwendet wird. Das Go-Paket encoding/xml kann XML marshalen und unmarshalen und entspricht dabei dem json-Paket.
Nach XML marshalen
xml.Marshal wandelt einen Go-Wert in XML-Bytes um.
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-Tags
Das xml-Tag steuert Elementnamen, genauso wie JSON-Tags JSON-Schlüssel steuern.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string "xml:\"name\""
}
func main() {
b, _ := xml.Marshal(User{"Ann"})
fmt.Println(string(b))
}Root-Element mit XMLName
Ein Feld vom Typ xml.Name mit dem Namen XMLName legt den Namen des Root-Elements fest.
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))
}Attribute
Fügen Sie einem Tag ,attr hinzu, um ein Feld als XML-Attribut statt als untergeordnetes Element auszugeben.
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 unmarshalen
xml.Unmarshal analysiert XML-Bytes in einen Pointer und ordnet Elementnamen den Tags zu.
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)
}Verschachtelte Elemente
Verschachtelte Structs werden auf verschachtelte XML-Elemente abgebildet und bilden so einen Baum.
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))
}Lesbares XML
xml.MarshalIndent formatiert die Ausgabe zur besseren Lesbarkeit mit Einrückungen.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string "xml:\"name\""
}
func main() {
b, _ := xml.MarshalIndent(User{"Ann"}, "", " ")
fmt.Println(string(b))
}Wiederholte Elemente
Ein Slice-Feld wird zu einer Reihe wiederholter XML-Elemente, eines pro Element.
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 im Vergleich zu XML
Die APIs entsprechen einander: Marshal, Unmarshal, MarshalIndent und Struct-Tags. XML ergänzt Attribute und das XMLName-Konzept für das Root-Element. Bevorzugen Sie JSON für neue APIs und XML für Legacy-Systeme.
Header-Deklaration
Die Konstante xml.Header enthält die standardmäßige XML-Deklaration als String, den Sie für vollständige Dokumente an die Ausgabe voranstellen können.
package main
import (
"encoding/xml"
"fmt"
)
func main() {
fmt.Print(xml.Header)
}Kurzer Check
Was bewirkt die Option ,attr in einem XML-Struct-Tag?
Zusammenfassung
encoding/xml:
xml.Marshal/Unmarshalentsprechen der JSON-API- XML-Tags benennen Elemente;
,attrerzeugt Attribute XMLNamelegt das Root-Element fest; Slices wiederholen Elemente
Häufig gestellte Fragen
Ist die Lektion „encoding/xml“ kostenlos?
Ja — der vollständige Text von „encoding/xml“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „encoding/xml“?
Mit XML arbeiten Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „encoding/xml“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.