gpt4 book ai didi

xml - 转到XML编码(marshal): Unintended Output of Slice

转载 作者:行者123 更新时间:2023-12-03 10:10:16 25 4
gpt4 key购买 nike

有一个结构,其中一个 slice 是其成员之一:

type Package struct {
Name string
...
Files []File
}

type File struct {
Name string
...
}
我使用 encoding/xml编码(marshal)此结构。这就是我得到的:
<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,对它的 slice 和编码机制了解不多。尽管这听起来像一个愚蠢的问题,但我如何才能获得预期的(第二种)格式?

最佳答案

编码和解编规则在 encoding/xml 的相关文档中有明确规定。例如,关于 xml.Marshal 的部分说:

If a field uses a tag "a>b>c", then the element c will be nestedinside parent elements a and b. Fields that appear next to each otherthat name the same parent will be enclosed in one XML element.



因此,您应该能够实现以下目标:
type Package struct {
Name string
Files []File `xml:"Files>File"`
}

// this also works
type Package struct {
Name string
Files []File `xml:">File"`
}
https://play.golang.org/p/gg-6Tj3WNnV

关于xml - 转到XML编码(marshal): Unintended Output of Slice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64501657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com