Creare e leggere XML in Go

Mattepuffo's logo
Creare e leggere XML in Go

Creare e leggere XML in Go

In questo articolo vediamo come creare un file XML, e poi leggerlo, in Go.

Come spesso accade in questo linguaggio, abbiamo già tutto il necessario, senza dover scaricare librerie esterne.

Qui di seguito il codice completo:

package main

import (
	"encoding/xml"
	"fmt"
	"io/ioutil"
	"os"
)

type Scrittore struct {
	XMLName xml.Name `xml:"scrittore"`
	Id      int      `xml:"id,attr"`
	Nome    string   `xml:"nome"`
	Libri   []string `xml:"libri"`
}

func main() {
	creaXml()
	leggeXml()
}

func creaXml() {
	s1 := &Scrittore{Id: 1, Nome: "stephen king"}
	s1.Libri = []string{"it", "cujo"}

	data, err := xml.MarshalIndent(s1, " ", "  ")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	err = ioutil.WriteFile("scrittori.xml", data, 0666)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
}

func leggeXml() {
	data, err := ioutil.ReadFile("scrittori.xml")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	s1 := &Scrittore{}
	errXml := xml.Unmarshal([]byte(data), &s1)
	if errXml != nil {
		fmt.Println(errXml)
		os.Exit(1)
	}

	fmt.Println(s1.Id)
	fmt.Println(s1.Nome)
	fmt.Println(s1.Libri)
}

Come vedete, abbiamo usato una struct, che si presenta in maniera un pò diversa da quelle "classiche".

Inoltre abbiamo aggiunto un solo record.

Un buon esercizio potrebbe essere aggiungere più records, e poi leggerli uno per volta.

Enjoy!


Condividi

Commentami!