返回顶部
首页 > 资讯 > 后端开发 > GO >意外输出:Go XML Marshal处理切片
  • 491
分享到

意外输出:Go XML Marshal处理切片

2024-04-04 23:04:57 491人浏览 泡泡鱼
摘要

从现在开始,努力学习吧!本文《意外输出:Go XML Marshal处理切片》主要讲解了等等相关知识点,我会在编程网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文

从现在开始,努力学习吧!本文《意外输出: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新手,对它的切片和编组机制了解不多。虽然这听起来像是一个愚蠢的问题,但我怎样才能实现预期的(第二种)格式?


解决方案


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

以上就是《意外输出:Go XML Marshal处理切片》的详细内容,更多关于的资料请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: 意外输出:Go XML Marshal处理切片

本文链接: https://www.lsjlt.com/news/595783.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作