1 回答

TA貢獻1817條經(jīng)驗 獲得超14個贊
您需要創(chuàng)建兩個結(jié)構(gòu):
一個代表
<file>
</file>
一個用于重復(fù)記錄
<person>
</person>
請看代碼里面的注釋:
package main
import (
"encoding/xml"
"fmt"
)
var sourceXML = []byte(`<file>
<person>
<name>John Doe</name>
<age>18</age>
</person>
<person>
<name>Jane Doe</name>
<age>20</age>
</person>
</file>`)
// Define a structure for each record
type Person struct {
Name string `xml:"name"`
Age int `xml:"age"`
}
// There needs to be a single struct to unmarshal into
// File acts like that one root struct
type File struct {
People []Person `xml:"person"`
}
func main() {
// Initialize an empty struct
var file File
err := xml.Unmarshal(sourceXML, &file)
if err != nil {
fmt.Println(err)
}
// file.People returns only the []Person rather than the root
// file struct with it's contents
fmt.Printf("%+v", file.People)
}
// output:
// [{Name:John Doe Age:18} {Name:Jane Doe Age:20}]
編輯。Kaedys 說 File 和 Person 結(jié)構(gòu)也可以嵌套(使用匿名結(jié)構(gòu)),如下所示:
type File struct {
People []struct {
Name string `xml:"name"`
Age int `xml:"age"`
} `xml:"person"`
}
- 1 回答
- 0 關(guān)注
- 121 瀏覽
添加回答
舉報