如何编组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
字段。
- 一个字段包括“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))
}