本文主要介绍结构体与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. <RedPacketQueryRequest><mch_billno>13ffsd</mch_billno><mch_id>1545441</mch_id><nonce_str>sfds5f4ds54f54s5f4d</nonce_str><sign>DRFFDSF414</sign><appid>wx124334324</appid><bill_type>fsd</bill_type></RedPacketQueryRequest>

<xml><mch_billno>13ffsd</mch_billno><mch_id>1545441</mch_id><nonce_str>sfds5f4ds54f54s5f4d</nonce_str><sign>DRFFDSF414</sign><appid>wx124334324</appid><bill_type>fsd</bill_type></xml>

2.

<RedPacketQueryRequest>

<mch_billno>13ffsd</mch_billno>

<mch_id>1545441</mch_id>

<nonce_str>sfds5f4ds54f54s5f4d</nonce_str>

<sign>DRFFDSF414</sign>

<appid>wx124334324</appid>

<bill_type>fsd</bill_type>

</RedPacketQueryRequest>

<xml>

<mch_billno>13ffsd</mch_billno>

<mch_id>1545441</mch_id>

<nonce_str>sfds5f4ds54f54s5f4d</nonce_str>

<sign>DRFFDSF414</sign>

<appid>wx124334324</appid>

<bill_type>fsd</bill_type>

</xml>

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

使用方法如下:

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

例:

xmlStr:= `<xml>
         <mch_billno>13ffsd</mch_billno>
         <mch_id>1545441</mch_id>
         <nonce_str>sfds5f4ds54f54s5f4d</nonce_str>
          <sign>DRFFDSF414</sign>
          <appid>wx124334324</appid>
          <bill_type>fsd</bill_type>
       </xml>`

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

golang中结构体转成xml格式相关推荐

  1. C语言——把结构体数据封装成TLV格式的数据

    功能描述: typedef struct {     unsigned char ucPort;     pid_t stPid; }TEST_INFO_S; 结构体TETS_INFO_S内有两个变量 ...

  2. 如何初始化结构体中的指针结构体_跟我一起学习go语言(五)golang中结构体的初始化方法...

    1.自定义一个结构体 type Vertex struct { X, Y float64} 2.初始化方法-指针: rect1 := new(Vertex )rect2 := &Vertex ...

  3. Golang 入门 : 结构体(struct)

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...

  4. Go语言进阶,结构体与json字符串格式的互相转换

    对于结构体大家都很熟悉,是一种自定义类型,可以将不同类型的同属于这个类的属性(成员变量)集合在一起,换句话说这些成员变量属于键值对,那么这种也就是常见的json格式,我们来看下如何将结构体转成json ...

  5. golang修改结构体中的切片值

    golang修改结构体中的切片值,直接传结构体地址就可以 package mainimport "fmt"type rspInfo struct {KeyWords string ...

  6. golang判断结构体为空_如何在Golang中检查结构是否为空?

    golang判断结构体为空 The size of an empty structure is zero in Golang. Here, empty structure means, there i ...

  7. golang 初始化并赋值_golang 结构体初始化时赋值格式介绍

    golang在给结构体赋值初始值时,用:分割k,v值 x := ItemLog{ Id: GetUuid(), ItemId: u.Id, UsrId: "123", Name: ...

  8. Go语言中结构体打Tag是什么意思?

    前言 哈喽,大家好,我是asong.今天想与大家分享Go语言中结构体标签是怎么使用的,以及怎样定制自己的结构体标签解析. 大多数初学者在看公司的项目代码时,看到的一些结构体定义会是这样的: type ...

  9. Go语言中结构体打 Tag 是什么意思?

    前言 哈喽,大家好,我是asong.今天想与大家分享Go语言中结构体标签是怎么使用的,以及怎样定制自己的结构体标签解析. 大多数初学者在看公司的项目代码时,看到的一些结构体定义会是这样的: type ...

最新文章

  1. easyUI样式之easyui-switchbutton
  2. [Google API](4)搜索结果
  3. array_map与array_column之间的关系
  4. python之路_django路由配置及模板
  5. C++中的指针特征操作符重载
  6. How Spring Boot Autoconfiguration Magic Works--转
  7. mysql order by 日期_mysql order by基于时间的盲注
  8. python位置参数_Python;argparse;如何指定位置参数的位置
  9. MFC多文档应用程序同时显示两个视图
  10. 楚留香手游服务器维护,【楚留香手游】4.27日游戏维护公告
  11. LeetCode 138 复制带随机指针的链表
  12. Log4j(二)—— Log4j基本使用方法
  13. 论文精读|VRCNet:变分关联点云补全网络(CVPR2021)
  14. 啥是认知智能? 认知智能和人工智能到底有啥区别? 你知道吗? 道翰天琼认知智能。
  15. mybatis源码(一)
  16. 摘要-The Inventor Mentor
  17. SaaS模式、技术与案例详解——第16章 SaaS模式可行性分析
  18. Lua开发--lua变量
  19. 如何将QQ音乐SQ品质FLAC格式转换成MP3音乐
  20. AudioRecord获取分贝值

热门文章

  1. 理解什么是DTO?什么是AutoMapper?
  2. Hadoop 入门总结
  3. 详细解读WordNet计算相似度的几种方法
  4. 不用U盘,电脑之间快速传输大文件,共享功能
  5. Linux多线程(线程互斥与线程锁)
  6. ITOP-1 Docker安装部署itop
  7. gaussdb200 实操
  8. 《博客服务自律公约》现征求意见了!
  9. k8s集群管理(一)
  10. Win11 PS2022 打开文件闪退