XML与Go结构互转实现(序列化及反序列化)

在Golang编程中,对象序列化成XML,或者从XML反序列化为对象是很常见的情况。

先前这里文章,可以点击直达了解一下:
根据XML生成Golang结构代码工具

介绍了代码生成工具,可便于根据报文直接快速生成代码,这样不用一个一个字段手写。

然后就可以根据生成的结构编写代码:

例如:

go 复制代码
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

相关推荐
大圣编程3 小时前
Java 多维数组详解
java·开发语言
殳翰6 小时前
下服务器端开发流程及相关工具介绍(C++)
开发语言·c++
进击的程序猿~6 小时前
Go Zero源码阅读1
后端·golang
落寞的星星6 小时前
这个对象就包含了已经转换好的DFA和各种词法分析器运转所需要的参数。下一步,我们就可以用ScannerInfo对象创建出Scanner对象,请看下面的代码:
开发语言·c#
nothing&nowhere6 小时前
用 Python 做问卷数据清洗:无效样本检测与处理实战
开发语言·python·数据清洗·数据处理·问卷星·问卷星脚本·刷问卷
2601_961593427 小时前
Rust 开发环境配置繁琐?RustRover 开箱即用搞定编码调试
开发语言·后端·macos·rust
HZZD_HZZD7 小时前
DL/T 645-2026新国标深度解读与智能电表协议适配实战:从帧结构变化到Java采集器升级的全链路改造方案
java·开发语言
多加点辣也没关系10 小时前
JavaScript|第4章:类型转换
开发语言·javascript
聪慧的水蜜桃10 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·c#
yqcoder10 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript