我有一个这样格式化的XML,来自数据库的转储

我试图用xml.Decode()函数在Go中解析它,但是我无法处理这样的XML。
我试图匹配一些在Golang中使用谷歌搜索XML解析的示例,但没有一种适合这种格式(在实体上均带有name属性)。

更新资料

感谢您的回答! 我想要实现的是:假设我有一个名为" users"的表和一个名为" categories"的表,我想从该XML创建尽可能多的UserCategory对象。
根据您的第一个答案,我可以轻松地使用已解析的Table对象,然后创建自己的对象,但是我想知道是否可以跳过该对象并直接对我的对象进行解码。


要根据名称将每个字段解组为不同的类型,您需要获取每个起始元素标记,检查名称,然后根据需要进行解码。类似于以下内容(其中getName是返回name属性的函数;有关最小的工作示例,请参见游乐场链接):

https://play.golang.org/p/l7Vmj_8Igp


xml.Unmarshal()函数的doc描述了XML文档和结构之间的映射如何工作(由json.Marshal()的doc补充)。如果您不熟悉struct标记,请查看以下答案:Go中标记的用途是什么?

首先,您需要对XML文档建模。请注意,如果所有其他元素都没有包装XML元素,则不是1个XML文档,而是多个(例如您的情况)。您有多个

文档。

您可以像这样对它们建模:

1
2
3
4
5
6
7
8
9
10
11
12
13
type Col struct {
    Name  string `xml:"name,attr"`
    Value string `xml:",chardata"`
}

type Row struct {
    Cols []Col `xml:"col"`
}

type Table struct {
    Name string `xml:"name,attr"`
    Rows []Row  `xml:"row"`
}