为了账号安全,请及时绑定邮箱和手机立即绑定

Go XML Marshal:切片的意外输出

Go XML Marshal:切片的意外输出

Go
Smart猫小萌 2022-07-11 15:05:38
有一个结构,其成员之一是切片: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 的新手,对它的切片和编组机制知之甚少。虽然这听起来像是一个愚蠢的问题,但我怎样才能达到预期的(第二种)格式?
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

编组和解组规则在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"`

}

https://play.golang.org/p/gg-6Tj3WNnV


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号