在go中解析一个简单值的xml数组

时间:2016-07-26 21:43:44

标签: arrays xml go slice

我有一个看起来像这样的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值,而不是通常的键/值对。

1 个答案:

答案 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;。
  •