0Pricing
Go Academy · Leçon

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 / Unmarshal reproduisent l’API json
  • Les balises xml nomment les éléments ; ,attr crée des attributs
  • XMLName dé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.

Toutes les leçons de ce cours

  1. Récapitulatif de encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob et encodage binaire
← Retour à Go Academy