package main import ( "encoding/xml" "fmt" ) type Person struct { Age int Name string } type ResultSet struct { Person []Person } func main() { v := ResultSet{Person:nil} data := ` <?xml version="1.0" encoding="UTF-8"?> <ResultSet> <Person> <Name>Iris</Name> <Age>14</Age> </Person> <Person> <Name>Hallow</Name> <Age>12</Age> </Person> </ResultSet> ` err := xml.Unmarshal([]byte(data), &v) if err != nil { fmt.Printf("error: %v", err) return } fmt.Printf("%+v\n", v) for _, per := range v.Person { fmt.Printf("Name: %q\n", per.Name) fmt.Printf("Name: %v\n", per.Age) } }
実行結果。
% go run unmar.go {Person:[{Age:14 Name:Iris} {Age:12 Name:Hallow}]} Name: "Iris" Age: 14 Name: "Hallow" Age: 12
Jsonパースしたときと同じような感じでパースを実行できた印象。
日本語ドキュメントはちょっと古い?
@see: xml パッケージ - golang.jp
@see: xml - The Go Programming Language