根据http://golang.org/pkg/encoding/xml/中的文档和示例,这是我的做法
package main
import (
"encoding/xml"
"log"
)
// Represents a <data> element
type Data struct {
XMLName xml.Name `xml:"data"`
Entry []Entry `xml:"entry"`
}
// Represents an <entry> element
type Entry struct {
Name string `xml:"name"`
Age int `xml:"age"`
}
// Test data
var testXML string = `
<data>
<entry>
<name>John Doe</name>
<age>28</age>
</entry>
<entry>
<name>Jane Doe</name>
<age>29</age>
</entry>
<entry>
<name>Bob Doe</name>
<age>30</age>
</entry>
<entry>
<name>Beth Doe</name>
<age>31</age>
</entry>
</data>
`
func main() {
data := &Data{}
err := xml.Unmarshal([]byte(testXML), data)
if err != nil {
log.Fatal(err)
}
for i := 0; i < len(data.Entry); i++ {
log.Printf("%#v", data.Entry[i])
}
}
输出是:
main.Entry{Name:"John Doe", Age:28}
main.Entry{Name:"Jane Doe", Age:29}
main.Entry{Name:"Bob Doe", Age:30}
main.Entry{Name:"Beth Doe", Age:31}