其他分享
首页 > 其他分享> > Golang XML 序列化忽略父级元素

Golang XML 序列化忽略父级元素

作者:互联网

在golang中XML序列化时,如果字段使用如下的标记 “a>b>c”,给字段添加omitempty,只能忽略 c 字段,并不能忽略父级元素 b,c

看如下例子:

func main() {
    type Room struct {
    	Name string `xml:"name,attr"`
    }

    type Hotel struct {
    	XMLName xml.Name `xml:"hotel"`
    	Name    string   `xml:"name,attr,omitempty"`
    	Rooms   []*Room  `xml:"rooms>room,omitempty"`
    }


	hotel := Hotel{}
	data, _ := xml.Marshal(hotel)

	fmt.Println(string(data))
}

输出结果是

 <hotel><rooms></rooms></hotel>

此时父级元素rooms数组依然被输出,如果要忽略父级元素,解决办法是使用指针,这里使用Room数组的指针。

func main() {
    type Room struct {
    	Name string `xml:"name,attr"`
    }

    type Hotel struct {
    	XMLName xml.Name `xml:"hotel"`
    	Name    string   `xml:"name,attr,omitempty"`
    	Rooms   *[]*Room  `xml:"rooms>room,omitempty"`
    }


	hotel := Hotel{}
	data, _ := xml.Marshal(hotel)

	fmt.Println(string(data))
}


输出结果如下,父级元素rooms数组被忽略了。

<hotel></hotel>

参考

标签:XML,xml,omitempty,Name,父级,hotel,序列化,string
来源: https://blog.csdn.net/LngZd/article/details/122243248