全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

在Go语言中如何解析XML,encoding/xml包怎么使用?

Go语言通过encoding/xml包支持XML解析与生成,可将XML解码为结构体或编码为XML,需用xml标签映射字段,支持属性、嵌套及切片,常用Unmarshal/Decode和MarshalIndent函数。

Go语言通过标准库中的encoding/xml包提供了对XML的解析和生成支持。你可以将XML数据解码为结构体,也可以将结构体编码为XML格式。使用起来简洁高效,适合处理配置文件、API响应等场景。

定义结构体映射XML

要解析XML,先定义一个Go结构体,并使用xml标签来指定字段与XML元素的对应关系。

例如,有如下XML内容:


  Alice
  30
  Beijing

对应的结构体可以这样写:

type Person struct {
  Name string `xml:"name"`
  Age int `xml:"age"`
  City string `xml:"city"`
}

解析XML字符串或文件

使用xml.Unmarshal函数将XML数据解析到结构体中。

data := `Alice30Beijing`
var person Person
err := xml.Unmarshal([]byte(data), &person)
if err != nil {
  log.Fatal(err)
}
fmt.Printf("%+v\n", person)

输出:{Name:Alice Age:30 City:Beijing}

如果是从文件读取:

file, err := os.Open("person.xml")
if err != nil {
  log.Fatal(err)
}
defer file.Close()

decoder := xml.NewDecoder(file)
err = decoder.Decode(&person)
if err != nil {
  log.Fatal(err)
}

处理属性和嵌套结构

XML属性用attr标签标识,嵌套元素则用结构体嵌套表示。

比如这个XML:


  Bob
  ail>bob@example.com

结构体可以定义为:

type Person struct {
  ID string `xml:"id,attr"`
  Name string `xml:"name"`
  Contact struct {
    Email string `xml:"email"`
  } `xml:"contact"`
}

如果XML中有多个同名子元素(如多个),可以用切片接收:

type Items struct {
  Item []string `xml:"item"`
}

生成XML(序列化)

使用xml.MarshalIndentxml.Marshal将结构体转为XML。

person := Person{
  ID: "456",
  Name: "Charlie",
  Contact: struct{ Email string }{Email: "charlie@example.com"},
}

output, err := xml.MarshalIndent(person, "", " ")
if err != nil {
  log.Fatal(err)
}
fmt.Println(string(output))

输出结果会是格式化后的XML文本。

注意:生成时不会自动添加XML声明(如),需要手动写入。

基本上就这些。掌握结构体标签、Unmarshal/Decode、Marshal的基本用法,就能应对大多数XML处理需求。不复杂但容易忽略细节,比如大小写、字段导出、标签拼写等。


# go语言  # go  # 编码  # ai  # 配置文件  # xml解析  # xml处理  # 标准库  # String  # if  # xml  # printf  # 字符串  # 结构体  # int  # Struct 


相关文章: 如何使用Golang table-driven基准测试_多组数据测量函数效率  开封网站制作公司,网络用语开封是什么意思?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  如何通过VPS建站无需域名直接访问?  如何用花生壳三步快速搭建专属网站?  C#如何使用XPathNavigator高效查询XML  建站主机服务器选型指南与性能优化方案解析  南京网站制作费用,南京远驱官方网站?  Android自定义listview布局实现上拉加载下拉刷新功能  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  建站之星多图banner生成与模板自定义指南  建站中国官网:模板定制+SEO优化+建站流程一站式指南  佛山企业网站制作公司有哪些,沟通100网上服务官网?  网站制作软件有哪些,制图软件有哪些?  建站之星如何取消后台验证码生成?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何快速查询域名建站关键信息?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  常州企业网站制作公司,全国继续教育网怎么登录?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  网站制作公司排行榜,抖音怎样做个人官方网站  如何在IIS中配置站点IP、端口及主机头?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何获取PHP WAP自助建站系统源码?  南平网站制作公司,2025年南平市事业单位报名时间?  如何在Golang中使用replace替换模块_指定本地或远程路径  建站之星伪静态规则如何正确配置?  建站之星云端配置指南:模板选择与SEO优化一键生成  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  广东企业建站网站优化与SEO营销核心策略指南  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  宝塔Windows建站如何避免显示默认IIS页面?  Thinkphp 中 distinct 的用法解析  如何快速搭建高效可靠的建站解决方案?  如何在IIS7上新建站点并设置安全权限?  制作网页的网站有哪些,电脑上怎么做网页?  山东网站制作公司有哪些,山东大源集团官网?  建站之星安装模板失败:服务器环境不兼容?  如何高效配置IIS服务器搭建网站?  如何用AWS免费套餐快速搭建高效网站?  家具网站制作软件,家具厂怎么跑业务?  如何在建站主机中优化服务器配置?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何用搬瓦工VPS快速搭建个人网站?  建站VPS能否同时实现高效与安全翻墙?  建站之星安装后如何配置SEO及设计样式? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。