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

如果为空,Golang 隐藏 XML 父标签

如果为空,Golang 隐藏 XML 父标签

Go
胡说叔叔 2021-09-09 15:03:03
经过一些跟踪和错误后,我想分享我正在处理的问题。我正在填充一个结构并将其转换为 XML ( xml.Marshal ) 正如您在下面看到的 Foo 示例按预期工作。然而,Bar 示例创建了一个空的 group1。所以我的问题是:“如果没有设置孩子,我如何防止生成 Group1。”package mainimport (    "fmt"    "encoding/xml")type Example1 struct{    XMLName  xml.Name `xml:"Example1"`    Element1 string   `xml:"Group1>Element1,omitempty"`    Element2 string   `xml:"Group1>Element2,omitempty"`    Element3 string   `xml:"Group2>Example3,omitempty"`}func main() {    foo := &Example1{}    foo.Element1 = "Value1"     foo.Element2 = "Value2"     foo.Element3 = "Value3"     fooOut, _ := xml.Marshal(foo)    fmt.Println( string(fooOut) )    bar  := &Example1{}    bar.Element3 = "Value3"    barOut, _ := xml.Marshal(bar)    fmt.Println( string(barOut) )}富输出:<Example1>    <Group1>        <Element1>Value1</Element1>        <Element2>Value2</Element2>    </Group1>    <Group2>        <Example3>Value3</Example3>    </Group2></Example1>条形输出:<Example1>    <Group1></Group1>  <------ How to remove the empty parent value ?     <Group2>        <Example3>Value3</Example3>    </Group2></Example1>添加此外,我尝试执行以下操作,但仍会生成一个空的“Group1”:type Example2 struct{    XMLName  xml.Name `xml:"Example2"`    Group1   struct{        XMLName  xml.Name `xml:"Group1,omitempty"`        Element1 string   `xml:"Element1,omitempty"`        Element2 string   `xml:"Element2,omitempty"`    }    Element3 string   `xml:"Group2>Example3,omitempty"`}完整代码可以在这里找到:http : //play.golang.org/p/SHIcBHoLCG。例如编辑:更改 golang 示例以使用 MarshalIndent 以提高可读性编辑 2 Ainar-G 中的示例适用于隐藏空父级,但填充它使它变得更加困难。“ panic: runtime error: invalid memory address or nil pointer dereference”
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信