使用Golang的encoding/xml包可高效解析XML,需定义结构体并用标签映射元素与属性。支持处理嵌套结构、同名子元素切片、XML属性及命名空间,字段须导出且标签正确。示例涵盖基本解析、属性读取、嵌套与切片处理,适用于配置文件和Web服务场景。
处理 XML 数据在配置文件读取、Web 服务交互等场景中非常常见。Golang 的 encoding/xml 包提供了简洁而强大的方式来解析和生成 XML 数据。本文通过实际示例,介绍如何使用 Golang 解析 XML,涵盖结构体映射、属性读取、嵌套元素处理等核心
用法。
要解析 XML,首先要根据 XML 文档结构定义对应的 Go 结构体。encoding/xml 使用结构体字段标签(tag)来指定 XML 元素与字段的对应关系。
例如,有如下 XML 内容:
可以定义结构体如下:
type Person struct {
Name string `xml:"name"`
Age int `xml:"age"`
City string `xml:"city"`
}
使用 xml.Unmarshal 解析字符串或字节流:
xmlData := `` var p Person err := xml.Unmarshal([]byte(xmlData), &p) if err != nil { log.Fatal(err) } fmt.Printf("%+v\n", p) // 输出: {Name:Alice Age:30 City:Beijing} Alice 30Beijing
XML 元素常包含属性(attributes),可通过字段标签使用 attr 指令读取。嵌套元素则通过嵌套结构体表示。
考虑以下带属性和嵌套的 XML:
对应结构体定义:
type Book struct {
ID string `xml:"id,attr"`
Category string `xml:"category,attr"`
Title string `xml:"title"`
Author struct {
Name string `xml:"name"`
Country string `xml:"country"`
} `xml:"author"`
}
解析代码:
xmlData := `` var book Book err := xml.Unmarshal([]byte(xmlData), &book) if err != nil { log.Fatal(err) } fmt.Printf("ID: %s, Title: %s, Author: %s\n", book.ID, book.Title, book.Author.Name) Go Programming Bob China
当 XML 中存在多个相同标签的子元素时,应将结构体字段定义为切片类型。
例如:
结构体定义:
type Library struct {
Books []struct {
Title string `xml:"title"`
} `xml:"book"`
}
解析后,Books 切片会自动填充两个元素。遍历输出:
for i, b := range lib.Books {
fmt.Printf("Book %d: %s\n", i+1, b.Title)
}
实际 XML 可能包含未映射字段。使用 xml:",any" 或匿名字段可跳过不关心的节点。若需忽略未知字段,可在字段标签中标注 xml:"-" 或直接省略标签。
对于带命名空间的 XML:
Go 的 encoding/xml 支持命名空间,字段标签可写为 xml:"ns item",前提是前缀在解析时有效。
基本上就这些。只要结构清晰,用结构体 + 标签的方式解析 XML 很直观。注意字段必须可导出(大写开头),标签拼写正确,就能顺利解析大多数 XML 场景。不复杂但容易忽略细节。
# go
# golang
# 字节
# 配置文件
# xml解析
# 命名空间
# xml
# 字符串
# 结构体
# 切片
# http
# 多个
# 就能
# 遍历
# 适用于
# 可在
# 可通过
# 如何使用
# 跳过
# 应将
相关文章:
如何选择靠谱的建站公司加盟品牌?
如何在建站宝盒中设置产品搜索功能?
建站主机选购指南:核心配置与性价比推荐解析
如何选择香港主机高效搭建外贸独立站?
开源网站制作软件,开源网站什么意思?
5种Android数据存储方式汇总
如何在橙子建站中快速调整背景颜色?
如何通过老薛主机一键快速建站?
如何选择高性价比服务器搭建个人网站?
如何快速搭建高效WAP手机网站?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
教程网站设计制作软件,怎么创建自己的一个网站?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
黑客如何通过漏洞一步步攻陷网站服务器?
定制建站哪家更专业可靠?推荐榜单揭晓
如何通过虚拟主机快速完成网站搭建?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
安徽网站建设与外贸建站服务专业定制方案
临沂网站制作企业,临沂第三中学官方网站?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何快速使用云服务器搭建个人网站?
如何通过NAT技术实现内网高效建站?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
宿州网站制作公司兴策,安徽省低保查询网站?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
小型网站建站如何选择虚拟主机?
广州建站公司哪家好?十大优质服务商推荐
如何在云指建站中生成FTP站点?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何用wdcp快速搭建高效网站?
如何在万网ECS上快速搭建专属网站?
如何通过多用户协作模板快速搭建高效企业网站?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
山东云建站价格为何差异显著?
江苏网站制作公司有哪些,江苏书法考级官方网站?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何快速搭建高效WAP手机网站吸引移动用户?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
高端建站三要素:定制模板、企业官网与响应式设计优化
手机网站制作与建设方案,手机网站如何建设?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
建站主机如何安装配置?新手必看操作指南
*请认真填写需求信息,我们会在24小时内与您取得联系。