全网整合营销服务商

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

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

如何用Golang操作encoding/xml解析XML_Golang XML解析实践

使用Golang的encoding/xml包可高效解析XML,需定义结构体并用标签映射元素与属性。支持处理嵌套结构、同名子元素切片、XML属性及命名空间,字段须导出且标签正确。示例涵盖基本解析、属性读取、嵌套与切片处理,适用于配置文件和Web服务场景。

处理 XML 数据在配置文件读取、Web 服务交互等场景中非常常见。Golang 的 encoding/xml 包提供了简洁而强大的方式来解析和生成 XML 数据。本文通过实际示例,介绍如何使用 Golang 解析 XML,涵盖结构体映射、属性读取、嵌套元素处理等核心用法。

定义结构体映射 XML 结构

要解析 XML,首先要根据 XML 文档结构定义对应的 Go 结构体。encoding/xml 使用结构体字段标签(tag)来指定 XML 元素与字段的对应关系。

例如,有如下 XML 内容:


  Alice
  30
  Beijing

可以定义结构体如下:

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

使用 xml.Unmarshal 解析字符串或字节流:

xmlData := `Alice30Beijing`
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}

处理 XML 属性和嵌套结构

XML 元素常包含属性(attributes),可通过字段标签使用 attr 指令读取。嵌套元素则通过嵌套结构体表示。

考虑以下带属性和嵌套的 XML:

gory="tech">
  Go Programming
  
    Bob
    China
  

对应结构体定义:

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 := `

  Go Programming
  
    Bob
    China
  
`

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)

处理多个同名子元素(切片)

当 XML 中存在多个相同标签的子元素时,应将结构体字段定义为切片类型。

例如:


  Go Intro
  XML Guide

结构体定义:

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:


  Value

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小时内与您取得联系。