Go中的XML - 如何获取标记并将其与结构字段匹配?

时间:2013-09-09 06:26:48

标签: xml go

将XML文件的任一标记与Go中的encoding/xml包中的结构字段匹配是否可行?

例如,在以下XML文件中:

<person>
    <food type="fruit" />
    <furniture type="refrigerator" />
    <food type="vegetable" />
    <food type="fruit" />
<person>

我可以在相应订单的food字段内获取furnitureperson吗?

所以我想要的是如下:

main.Person{main.Food{Type:"fruit"}, main.Furniture{Type:"refrigerator"}, main.Food{Type:"vegetable"}, main.Food{Type:"fruit"}}

而不是

main.Person{Food:[]main.Food{main.Food{Type:"fruit"}, main.Food{Type:"vegetable"}, main.Food{Type:"fruit"}}, Furniture:[]main.Furniture{main.Furniture{Type:"refrigerator"}}}

这是因为我必须按时间顺序将person内的每个项目都取出,而后一个示例仅在每个子标签内对项目进行排序。所以我不知道后者中furniture标签何时发生,但在这种情况下可以进入前者 - 第3位。

感谢。

1 个答案:

答案 0 :(得分:2)

这可能与Does XML care about the order of elements?有关。

基本上,如果没有XSD (XML Schema Definition),则无法指定处理或显示XML元素的顺序。

如果您使用有效的XSD处理XML,它可能会有效。

查看go-xsd