Go XML Marshal:切片的意外输出

有一个结构,其成员之一是切片:


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 的新手,对它的切片和编组机制知之甚少。虽然这听起来像是一个愚蠢的问题,但我怎样才能达到预期的(第二种)格式?


Smart猫小萌
浏览 139回答 1
1回答

凤凰求蛊

编组和解组规则在encoding/xml. 例如上一节xml.Marshal说:如果字段使用标签“a>b>c”,则元素 c 将嵌套在父元素 a 和 b 中。名称相同的相邻字段将包含在一个 XML 元素中。所以你应该能够通过这个实现你想要的:type Package struct {&nbsp; &nbsp; Name&nbsp; string&nbsp; &nbsp; Files []File `xml:"Files>File"`}// this also workstype Package struct {&nbsp; &nbsp; Name&nbsp; string&nbsp; &nbsp; Files []File `xml:">File"`}https://play.golang.org/p/gg-6Tj3WNnV
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go