2 回答

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以>
在標(biāo)簽中使用。
如果 XML 元素包含名稱(chēng)與格式為“a”或“a>b>c”的標(biāo)記前綴匹配的子元素,unmarshal 將深入到 XML 結(jié)構(gòu)中查找具有給定名稱(chēng)的元素,并將映射該結(jié)構(gòu)體字段的最里面的元素。以 ">" 開(kāi)頭的標(biāo)記相當(dāng)于以字段名稱(chēng)開(kāi)頭,后跟 ">" 的標(biāo)記。
如果字段使用標(biāo)簽“a>b>c”,則元素 c 將嵌套在父元素 a 和 b 內(nèi)。命名相同父級(jí)的彼此相鄰的字段將包含在一個(gè) XML 元素中。
例如:
type?DataTestplan?struct?{ ????Data?[]Testplan?`json:"data"?xml:"data>element"` }

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
無(wú)需為每個(gè)標(biāo)簽創(chuàng)建不同的結(jié)構(gòu)。您可以將它們?nèi)壳度肫渲小?duì)于 xml 解析,您缺少一些標(biāo)簽。>您可以通過(guò)在 xml 標(biāo)記中使用 來(lái)避免一些代碼復(fù)制。當(dāng)您迭代兩個(gè)元素時(shí),這將有效地“合并”它們。下面是一個(gè)更簡(jiǎn)潔的實(shí)現(xiàn)示例:
type Root struct {
XMLName xml.Name `xml:"root"`
Data []struct {
Group string `json:"group" xml:"group"`
Name string `json:"name" xml:"name"`
Parameters []struct {
Comment string `json:"comment" xml:"comment,omitempty"`
Description string `json:"description" xml:"description,omitempty"`
} `json:"parameters" xml:"parameters>element"`
Released bool `json:"released" xml:"released"`
Teststeps []struct {
Bin int32 `json:"bin" xml:"bin"`
} `xml:"teststeps>element,omitempty"`
Version int32 `json:"version" xml:"version"`
} `json:"data" xml:"data>element"`
}
通過(guò)運(yùn)行:
var dataNewTestplans DataTestplan
err := xml.NewDecoder(r.Body).Decode(&dataNewTestplans)
xmlData, _ := xml.Marshal(dataNewTestplans)
fmt.Printf(string(xmlData))
你得到:
<root><data><element><group>TEST</group><name>TEST</name><parameters><element><comment>test</comment><description>test</description></element><element><comment>test1</comment></element></parameters><released>true</released><teststeps><element><bin>32</bin></element></teststeps><version>1</version></element></data></root>
- 2 回答
- 0 關(guān)注
- 222 瀏覽
添加回答
舉報(bào)