xml与golang结构互转的代码例子

本文介绍了在Go语言中如何将结构对象序列化为XML以及如何将XML反序列化为Go结构。示例代码展示了使用`xml.MarshalIndent`生成带缩进的XML,以及使用`xml.Marshal`生成无缩进格式。同时,还演示了如何根据XML报文定义Go结构体,并使用`xml.Unmarshal`进行反序列化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在go语言中,通常会遇到需要将go结构对象序列化为xml,或者将xml反序列化为go结构。

go结构序列化为xml代码如下:

package main
import (
   "encoding/xml"
   "fmt"
)
type person struct {
   Name string `xml:"name,attr"`
   Age  int    `xml:"age,attr"`
   Sex  string
}
func main() {
   p := person{Name: "张三", Age: 40, Sex: "男"}
   var (
      data []byte
      err  error
   )
   // 有缩进格式
   if data, err = xml.MarshalIndent(p, "", " "); err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println(string(data))
   
   // 无缩进格式
   if data, err = xml.Marshal(p); err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println(string(data))
}

注意:生成有缩进格式xml的使用MarshalIndent,生成无缩进格式的使用Marshal。

xml反序列化为go结构代码如下:

package main

import (
	"encoding/xml"
	"fmt"
)

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反序列化为go结构,首先需要根据xml报文结构来编写golang的结构体定义代码,这一点比较麻烦,可以使用在线工具来将xml生成golang结构定义,比较好用如这个: 在线xml生成golang结构定义工具 ,然后再使用xml.Unmarshal方法进行反序列化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值