読者です 読者をやめる 読者になる 読者になる

uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

Go言語でXMLのパースしたった

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