如何编组xml在Go中但忽略空字段

问题描述:

如果我有一个结构,我希望能够通过(使用编码/ xml)将xml中的Marhsal/Unmarshal事物 - 我怎样才能不是打印属性哪些是空的?如何编组xml在Go中但忽略空字段

package main 

import (
    "encoding/xml" 
    "fmt" 
) 

type MyThing struct { 
    XMLName xml.Name `xml:"body"` 
    Name string `xml:"name,attr"` 
    Street string `xml:"street,attr"` 
} 

func main() { 
    var thing *MyThing = &MyThing{Name: "Canister"} 
    result, _ := xml.Marshal(thing) 
    fmt.Println(string(result)) 
} 

例如看到http://play.golang.org/p/K9zFsuL1Cw

在上面的操场我不想写我的空街道属性;我怎么能这样做?

使用omitempty标记street字段。

Go XML package

  • 一个字段包括“omitempty”选项标签省略 如果字段值是空的。空值为假,0,任意 无指针或接口值,以及任何数组,片段,映射或长度为零的字符串。

在您的例子的情况下:

package main 

import (
    "encoding/xml" 
    "fmt" 
) 

type MyThing struct { 
    XMLName xml.Name `xml:"body"` 
    Name string `xml:"name,attr"` 
    Street string `xml:"street,attr,omitempty"` 
} 

func main() { 
    var thing *MyThing = &MyThing{Name: "Canister"} 
    result, _ := xml.Marshal(thing) 
    fmt.Println(string(result)) 
} 

Playground