1 回答

TA貢獻2080條經驗 獲得超4個贊
該encoding/xml軟件包會為您處理。您只需要正確標記您的結構字段以告訴xml包它們是如何在 XML 源中找到的:
type Property struct {
Name string `xml:"name,attr"`
Value string `xml:",cdata"`
}
type Properties struct {
Props []Property `xml:"property"`
DateTime string `xml:"datetime"`
Category string `xml:"categorisation"`
}
請注意,我將DateTime字段類型更改為,string因為 XML ( 13 Jan 2015 14:13:15GMT) 中的時間戳不符合標準(在 Go layout:中為ISO 8601)。2006-01-02T15:04:05Z07:00time.RFC3339
解組代碼:
ps := Properties{}
if err := xml.Unmarshal([]byte(src), &ps); err != nil {
panic(err)
}
fmt.Printf("%+v", ps)
輸出(在Go Playground上試試):
{Props:[{Name:element1 Value:data1} {Name:element2 Value:data2} {Name:element3 Value:data3}
{Name:element4 Value:data4} {Name:element5 Value:data5} {Name:element6 Value:data6}
{Name:element7 Value:data7}] DateTime:13 Jan 2015 14:13:15GMT Category:cat1}
你可以看到,Props正常包含正確的順序所有7個性能即使<datetime>和<categorisation>標簽插入它們之間。
- 1 回答
- 0 關注
- 149 瀏覽
添加回答
舉報