只定义一个结构并让它处理Go中XML文件的所有内部元素?

时间:2013-09-19 03:23:06

标签: xml struct go unmarshalling

假设我有以下xml:

<main symbol="X">
<blockA main_score="3">
    <a score="0"/>
</blockA>
<blockB>
    <b id="3" name="Mike"/>
</blockB>
</main>

我想定义以下结构(空白标签是我要解决的部分):

type Result struct {
    XMLName xml.Name `xml:"main"`
    Symbol string `xml:"symbol,attr"`
    MainScore int
    Score int
    Id int
    Name string
}

我想得到的是以下结构:

symbol: X
main_score: 3
score: 0
id: 3
name: Mike

那么如何定义进入内部元素(blockAblockB)的XML标记,并且还可以到达其属性值(main_score)和内部元素(scoreidname)?

我可以通过定义另一个结构并将它们嵌入父Result结构中来解决此问题。但是,是否仍然可以不使用嵌入结构并只在主结构中定义结构标记并让它处理整个元素?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为目前无法使用当前版本的软件包将XML解组到您的结构中。

如果支持,则需要使用:

注释MainScore
MainScore int `xml:"blockA>main_score,attr"`

即。从main_score子元素中选择blockA属性。目前这不起作用,如issue 3688中所述。

目前,我认为你需要创建嵌套的结构来完全解组你所追求的数据。