Go语言通过encoding/xml包支持XML解析与生成,使用结构体标签映射元素和属性。1. 解析XML:定义结构体并绑定xml标签,如Person{Name, Age, City}对应name、age、city元素;2. 处理属性与嵌套:用xml:",attr"标识属性字段,XMLName指定根元素;3. 生成XML:通过xml.MarshalIndent序列化结构体并输出带格式的XML;4. 处理复杂结构:使用切片接收多个同名子元素,如Library包含[]Book。字段需导出(大写开头),推荐结构体方式处理常规场景。

Go语言通过标准库 encoding/xml 提供了对XML数据的解析和生成支持。无论是处理配置文件、Web服务接口(如SOAP),还是与其他系统交互,Go都能以结构体标签的方式简洁高效地操作XML。下面详细介绍其核心用法。
Go推荐使用结构体(struct)来映射XML数据。通过在结构体字段上添加xml标签,可以指定字段与XML元素或属性的对应关系。
示例XML:
<person> <name>Alice</name> <age>30</age> <city>Beijing</city> </person>
对应的Go结构体定义:
立即学习“go语言免费学习笔记(深入)”;
type Person struct {
Name string `xml:"name"`
Age int `xml:"age"`
City string `xml:"city"`
}
解析代码:
xmlData := `<person><name>Alice</name><age>30</age><city>Beijing</city></person>`
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中常使用属性(attribute)存储元信息。Go通过attr标签标识属性字段。
示例带属性的XML:
<book id="123" category="tech"> <title>Go Programming</title> <author>John Doe</author> </book>
结构体定义:
type Book struct {
XMLName xml.Name `xml:"book"`
ID string `xml:"id,attr"`
Category string `xml:"category,attr"`
Title string `xml:"title"`
Author string `xml:"author"`
}
说明:
使用xml.Marshal或xml.MarshalIndent可将结构体转换为XML字符串。
b := Book{
ID: "456",
Category: "web",
Title: "Web Dev with Go",
Author: "Jane Smith",
}
output, err := xml.MarshalIndent(b, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(xml.Header + string(output))
输出结果会包含标准XML头和格式化内容:
<?xml version="1.0" encoding="UTF-8"?> <book id="456" category="web"> <title>Web Dev with Go</title> <author>Jane Smith</author> </book>
当XML包含多个同名子元素时,可用切片接收。
示例:
<library> <book id="1"><title>Go Intro</title></book> <book id="2"><title>Advanced Go</title></book> </library>
结构体定义:
type Library struct {
Books []Book `xml:"book"`
}
解析后,Books切片会自动填充两个Book实例。
基本上就这些。encoding/xml包设计直观,结合结构体标签能应对大多数XML场景。注意字段必须是导出的(大写开头),否则无法被解析或序列化。对于不规则XML,也可使用xml.Decoder进行流式逐节点处理,但多数情况结构体方式更清晰高效。
以上就是Go语言如何处理xml数据? Go标准库encoding/xml包用法详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号