Crear un archivo XML en Golang

Es posible crear un archivo XML en Golang a partir de un struct, te mostraremos como hacerlo. Desde luego es posible crear un XML simplemente generando una cadena con los nodos que requieras y para después escribirla en un archivo, pero con el método siguiente estarás seguro de que tu estructura de nodos estará bien formada y utilizarás una de las características para el manejo datos más potente de Golang.

» Ver más ejemplos de Golang

Puedes copiar y probar el siguiente código:

package main

import (
	"encoding/xml"
	"fmt"
	"log"
	"os"
)

//decodigo.com

type Usuario struct {
	XMLName  xml.Name `xml:"usuario"`
	Id       int      `xml:"id,attr"`
	Nombre   string   `xml:"nombre"`
	Username string   `xml:"username"`
	Password string   `xml:"password"`
	Email    string   `xml:"email"`
}

func main() {
	usuario := &Usuario{Id: 1, Nombre: "Jose", Username: "jose", Password: "123", Email: "correo@prueba.com"}

	out, _ := xml.MarshalIndent(usuario, " ", "  ")
	fmt.Println(string(out))

	f, err := os.Create("/home/decodigo/Documentos/go/archivos/archivo.xml")

	if err != nil {
		log.Fatal(err)
	}

	defer f.Close()

	_, err2 := f.WriteString(string(out))

	if err2 != nil {
		log.Fatal(err2)
	}

	fmt.Println("listo")
}

En el primer bloque de código definimos la estructura que queremos convertir a nodos de XML:

type Usuario struct {
	XMLName  xml.Name `xml:"usuario"`
	Id       int      `xml:"id,attr"`
	Nombre   string   `xml:"nombre"`
	Username string   `xml:"username"`
	Password string   `xml:"password"`
	Email    string   `xml:"email"`
}

Nuestro struct Usuario tiene varios elementos. Si estos elementos serán atributos en una etiqueta, deben estar indicados como en el caso del Id, después del tipo de dato xml:"id,attr", con la cadena «attr» después de la coma.

Los demás nodos que contienen información deben indicar el nombre que tendrán las etiquetas delimitadoras, como en el caso del Nombre: xml:»username».

Posteriormente usamos MarshalIndent del paquete encoding/xml.

	out, _ := xml.MarshalIndent(usuario, " ", "  ")

En las siguientes líneas creamos, escribimos y cerramos nuestro archivo de texto con extensión «.xml«

	f, err := os.Create("/home/decodigo/Documentos/go/archivos/archivo.xml")

	if err != nil {
		log.Fatal(err)
	}

	defer f.Close()

	_, err2 := f.WriteString(string(out))

	if err2 != nil {
		log.Fatal(err2)
	}

	fmt.Println("listo")

Desde luego, tu debes cambiar la ruta donde se desees que se genere el archivo. Al ejecutar el ejemplo generarás un archivo XML como el que se muestra a continuación:

Crear un archivo XML en Golang

Este ejemplo para crear un archivo XML en Golang es sencillo, desde luego el archivo final puede ser tan complejo como desees, siempre y cuando definas correctamente los sctucts que necesites convertir a XML.

Ver más: https://golang.org/doc/

Más información en inglés: https://geekole.com/create-an-xml-file-in-golang/