golang中结构体转成xml格式

青旅半醒 2022-06-13 07:48 415阅读 0赞

本文主要介绍结构体与xml格式的字符串进行相互转换,Go自带xml包,所以进行格式转换非常的方便。

一、结构体转成xml格式

1、转成不需要排版的xml格式字符串,可直接使用Marshal()方法

func Marshal(v interface{}) ([]byte, error)

2、转成可以排版的xml格式,可以使用MarshalIndent()方法

MarshalIndent(v interface{}, prefix, indent string)

参数说明:prefix为前缀(用于所有的标签),indent为字段缩进(用于field)

例:

type RedPacketQueryRequest struct {
MchBillno string `xml:”mch_billno”`

MchId string `xml:”mch_id”`

NonceStr string `xml:”nonce_str”`

Sign string `xml:”sign”`

Appid string `xml:”appid”`

BillType string `xml:”bill_type”`

}

func main() {
redPack:=RedPacketQueryRequest{
MchBillno:”13ffsd”,
MchId:”1545441”,
NonceStr:”sfds5f4ds54f54s5f4d”,
Sign:”DRFFDSF414”,
Appid:”wx124334324”,
BillType:”fsd”,
}

//结构体转成xml格式
if xmlByteData,err:=xml.Marshal(redPack);err==nil{
strData:=string(xmlByteData)
fmt.Println(strData)
//转成xml格式
fmt.Println(strings.Replace(strData,”RedPacketQueryRequest”,”xml”,-1))

//结构体转成xml格式化的格式
if xmlIndentByteData, err2 := xml.MarshalIndent(redPack, “”, “ “); err2==nil{
strData:=string(xmlIndentByteData)
fmt.Println(strData)
fmt.Println(strings.Replace(strData,”RedPacketQueryRequest”,”xml”,-1))
}

}

//打印结果

  1. 13ffsd1545441sfds5f4ds54f54s5f4dDRFFDSF414wx124334324fsd
13ffsd1545441sfds5f4ds54f54s5f4dDRFFDSF414wx124334324fsd

2.



13ffsd

1545441

sfds5f4ds54f54s5f4d

DRFFDSF414

wx124334324

fsd



13ffsd

1545441

sfds5f4ds54f54s5f4d

DRFFDSF414

wx124334324

fsd

二、将xml格式的字符串转成结构体

使用方法如下:

Unmarshal(data []byte, v interface{}) error

例:

xmlStr:= `
13ffsd
1545441
sfds5f4ds54f54s5f4d
DRFFDSF414
wx124334324
fsd
`

redPack2:=RedPacketQueryRequest{}
xml.Unmarshal([]byte(xmlStr),&redPack2)

发表评论

表情:
评论列表 (有 0 条评论,415人围观)

还没有评论,来说两句吧...

相关阅读