问题描述
type Package struct {
Name string
...
Files []File
}
type File struct {
Name string
...
}
我使用encoding/xml
来封送此结构。这就是我得到的:
<Package>
<Name>example</Name>
<Files>
<Name>Example1</Name>
</Files>
<Files>
<Name>Example2</Name>
</Files>
</Package>
这不是我想要的行为。我想将其编组为这种格式:
<Package>
<Name>example</Name>
<Files>
<File>
<Name>Example1</Name>
</File>
<File>
<Name>Example2</Name>
</File>
</Files>
</Package>
我是Golang的新手,对它的切片和编组机制了解不多。尽管这听起来像是一个愚蠢的问题,但是我该如何实现预期的(第二种)格式?
解决方法
encoding/xml
的相关文档中对编排和解编规则进行了很好的规定。例如,xml.Marshal
上的部分说:
如果字段使用标签“ a> b> c”,则元素c将被嵌套 在父元素a和b中。彼此相邻出现的字段 该名称相同的父对象将包含在一个XML元素中。
因此,您应该能够通过此实现您想要的:
type Package struct {
Name string
Files []File `xml:"Files>File"`
}
// this also works
type Package struct {
Name string
Files []File `xml:">File"`
}