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!
go xml
Commentami!