encoding/xml
Manipuler du XML
encoding/xml est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Utiliser XML
XML est un format détaillé fondé sur des balises, encore courant dans les anciens systèmes et les fichiers de configuration. Le paquet encoding/xml de Go le sérialise et le désérialise, comme le paquet json.
Marshal vers XML
xml.Marshal transforme une valeur Go en octets XML.
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))
}Balises XML
La balise xml contrôle les noms des éléments, tout comme les balises json contrôlent les clés JSON.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string "xml:\"name\""
}
func main() {
b, _ := xml.Marshal(User{"Ann"})
fmt.Println(string(b))
}Élément racine avec XMLName
Un champ de type xml.Name nommé XMLName définit le nom de l’élément racine.
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))
}Attributs
Ajoutez ,attr à une balise pour représenter un champ comme un attribut XML plutôt que comme un élément enfant.
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))
}Unmarshal XML
xml.Unmarshal analyse des octets XML dans un pointeur, en faisant correspondre les noms des éléments aux balises.
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)
}Éléments imbriqués
Les structures imbriquées correspondent à des éléments XML imbriqués, formant ainsi un arbre.
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))
}XML mis en forme
xml.MarshalIndent met la sortie en forme avec une indentation pour en améliorer la lisibilité.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string "xml:\"name\""
}
func main() {
b, _ := xml.MarshalIndent(User{"Ann"}, "", " ")
fmt.Println(string(b))
}Éléments répétés
Un champ de type tranche devient une série d’éléments XML répétés, un par élément.
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 ou XML
Les API se correspondent : Marshal, Unmarshal, MarshalIndent et les balises de structure. XML ajoute les attributs et le concept d’élément racine XMLName. Préférez JSON pour les nouvelles API ; utilisez XML pour les systèmes anciens.
Déclaration d’en-tête
La constante xml.Header contient la chaîne de déclaration XML standard que vous pouvez ajouter au début de la sortie pour obtenir des documents complets.
package main
import (
"encoding/xml"
"fmt"
)
func main() {
fmt.Print(xml.Header)
}Vérification rapide
Que fait l’option ,attr dans une balise de structure xml ?
Récapitulatif
encoding/xml :
xml.Marshal/Unmarshalreproduisent l’API json- Les balises xml nomment les éléments ;
,attrcrée des attributs XMLNamedéfinit la racine ; les tranches répètent les éléments
Questions Fréquemment Posées
La leçon « encoding/xml » est-elle gratuite ?
Oui — le texte complet de « encoding/xml » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « encoding/xml » ?
Manipuler du XML Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « encoding/xml » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.