XML与Go结构互转实现(序列化及反序列化)
在Golang编程中,对象序列化成XML,或者从XML反序列化为对象是很常见的情况。
先前这里文章,可以点击直达了解一下:
根据XML生成Golang结构代码工具
介绍了代码生成工具,可便于根据报文直接快速生成代码,这样不用一个一个字段手写。
然后就可以根据生成的结构编写代码:
例如:
type XML struct {
XMLName xml.Name `xml:"xml"`
Text string `xml:",chardata"`
Abc string `xml:"abc"`
}
func main() {
xmlSrc := []byte(`<xml>
<abc>123</abc>
</xml>`)
var x XML
xml.Unmarshal(xmlSrc, &x)
if x.Abc == "123" {
fmt.Println("ok")
}
}
关键代码:
反序列化用:
xml.Unmarshal(xmlSrc, &x)
序列化用:
xml, err := xml.MarshalIndent(x, “”, " ")
参数2是每行前缀,参数3是缩进,这里使用缩进符号tab