根据下面的链接,我们可以使用 >
或其他结构从嵌套的 xml 中获取数据。
How do I unmarshal nested XML elements into an array?
但是,如果不使用这样的结束标记,它就不起作用。
代码:
package main
import (
"fmt"
"encoding/xml"
)
func main() {
container := Parent{}
err := xml.Unmarshal([]byte(xml_data), &container)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(container)
}
}
var xml_data = `<Parent>
<Val>Hello</Val>
<Child Val="Hello"/>
<Child Val="Hello"/>
<Child Val="Hello"/>
</Parent>`
type Parent struct {
Val string
Children Children
}
type Children struct {
Child []Child
}
type Child struct {
Val string
}
结果:
{Hello {[]}}
有什么解决办法吗?
最佳答案
<Child>
在您的 XML 中是 Parent
的“ child ” , 所以去掉 Children
包装器结构, slice 应该是 Parent
的字段.还有 <Child>
中的值在属性中,所以你必须使用 ,attr
选项。
工作模型:
type Parent struct {
Val string
Child []Child
}
type Child struct {
Val string `xml:",attr"`
}
这将输出(在 Go Playground 上尝试):
{Hello [{Hello} {Hello} {Hello}]}
关于xml - 如何从不在重复项中使用结束标记的嵌套 xml 中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147396/