我有一个看起来像这样的xml:
<MyElement>
<Ids>
<int>1</int>
<int>2</int>
</Ids>
</MyElement>
我觉得在go中解析很有挑战性。我试过以下
type MyElement struct {
Ids int[]
}
甚至
type Ids struct {
id int[] `xml:"int"`
}
type MyElement struct {
Ids Ids
}
但它永远不会被接受。
难点在于这些元素都被称为int并且只存储一个int值,而不是通常的键/值对。
答案 0 :(得分:2)
您需要指定int
元素的路径:
type MyElement struct {
Ids []int `xml:"Ids>int"`
}
https://play.golang.org/p/HfyQzOiSqa
你也可以这样做,以免重复&#34; Ids&#34;
type MyElement struct {
Ids []int `xml:">int"`
}
xml.Unmarshal
's documentation中提到了此功能:
- 如果XML元素包含名称匹配的子元素 标签格式为&#34; a&#34;或者&#34; a&gt; b&gt; c&#34;,unmarshal 将进入XML结构,寻找带有的元素 给定名称,并将最里面的元素映射到该结构 领域。以&#34;&gt;&#34;开头的标签相当于一个开始 使用字段名称后跟&#34;&gt;&#34;。