登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-28 16:54:28 222浏览 收藏

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

问题内容

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

type package struct {
    name string
    ...
    files []file
}

type file struct {
    name string
    ...
}

我使用 encoding/xml 来编组此结构。这就是我得到的:


    example
    
        example1
    
    
        example2
    

这不是我想要的行为。我想将其编组为以下格式:


    example
    
        
            Example1
        
        
            Example2
        
    

我是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处理切片》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>