encoding/xml
Trabaje con XML
encoding/xml es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
Trabajar con XML
XML es un formato detallado basado en etiquetas que todavía es común en sistemas y configuraciones heredados. El paquete de Go encoding/xml lo serializa y deserializa, de forma similar al paquete json.
Marshal a XML
xml.Marshal convierte un valor de Go en bytes 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))
}Etiquetas XML
La etiqueta xml controla los nombres de los elementos, del mismo modo que las etiquetas json controlan las claves 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))
}Elemento raíz con XMLName
Un campo de tipo xml.Name llamado XMLName establece el nombre del elemento raíz.
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))
}Atributos
Añada ,attr a una etiqueta para representar un campo como un atributo XML en lugar de como un elemento secundario.
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 de XML
xml.Unmarshal analiza bytes XML en un puntero y relaciona los nombres de los elementos con las etiquetas.
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)
}Elementos anidados
Las estructuras anidadas se corresponden con elementos XML anidados, formando un árbol.
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 con formato
xml.MarshalIndent formatea la salida con sangría para facilitar su lectura.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string "xml:\"name\""
}
func main() {
b, _ := xml.MarshalIndent(User{"Ann"}, "", " ")
fmt.Println(string(b))
}Elementos repetidos
Un campo slice se convierte en una serie de elementos XML repetidos, uno por elemento.
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 frente a XML
Las API son equivalentes: Marshal, Unmarshal, MarshalIndent y etiquetas de estructura. XML añade atributos y el concepto de raíz XMLName. Prefiera JSON para las API nuevas; XML para los sistemas heredados.
Declaración de cabecera
La constante xml.Header contiene la cadena de declaración XML estándar que puede anteponer a la salida para crear documentos completos.
package main
import (
"encoding/xml"
"fmt"
)
func main() {
fmt.Print(xml.Header)
}Comprobación rápida
¿Qué hace la opción ,attr en una etiqueta de estructura xml?
Repaso
encoding/xml:
xml.Marshal/Unmarshalreflejan la API de json- Las etiquetas xml asignan nombres a los elementos;
,attrcrea atributos XMLNameestablece la raíz; los slices repiten los elementos
Preguntas frecuentes
¿La lección «encoding/xml» es gratis?
Sí — el texto completo de «encoding/xml» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «encoding/xml»?
Trabaje con XML Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «encoding/xml»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.