亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go:解組包含不同實體的 XML 列表

Go:解組包含不同實體的 XML 列表

Go
料青山看我應如是 2021-12-20 14:33:43
我得到了以下 XML 結構<properties>    <property name="element1">data1</property>    <property name="element2">data2</property>    <datetime name="start">13 Jan 2015 14:13:15GMT</datetime>    <property name="element3">data3</property>    <property name="element4">data4</property>    <property name="element5">data5</property>    <categorisation name="category">cat1</categorisation>    <property name="element6">data6</property>    <property name="element7">data7</property></properties>我想將其解組為以下內容:type Property string {    Name string    Value string}type Properties struct {    Props []Property     DateTime time.Time    Category string}但我不知道如何處理亂序屬性
查看完整描述

1 回答

?
犯罪嫌疑人X

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>標簽插入它們之間。


查看完整回答
反對 回復 2021-12-20
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號