Go+ 概述
Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。
正文
上一篇文章我们介绍了 Go+ 提供了对 JSON 编码和解码的内置支持,同样,Go+ 也提供了对 XML 编码和解码的支持。接下来我们就来了解一下这部分的一些内容。
导入包
Go+ 在处理 XML 编码和解码时,一般使用的工具库是 encoding/xml 包,导入方式如下:
import (
"encoding/xml"
)
复制代码
定义 XML 结构体
和 JSON 类似,在对 XML 变量处理前,我们需要提前定好对应的 XML 结构体,定义结构体中的属性元素时分为三部分,第一部分是属性名称,一般首字母大写,第二部分是数据类型,比如 int、string等,第三部分是 XML 结构中最终显示的字段,一般和第一部分的属性名称对应,但是首字母小写。下面通过一段代码实例来看一下如何定义 XML 结构体:
type Animal struct {
XMLName xml.Name `xml:"animal"`
Id int `xml:"id,attr"`
Name string `xml:"name"`
Origin []string `xml:"origin"`
}
定义 XML 对象并赋值
基于上面定义的 XML 结构体,我们定义一个 XML 对象。代码如下:
panda := &Animal{Id: 001, Name: "Panda"}
panda.Origin = []string{"China", "SiChuan"}
编码和解码 XML 实例
下面我们通过一个完整的实例来体验一下 Go+ 是如何对 XML 对象进行编码和解码的,代码实例如下:
import (
"encoding/xml"
)
type Animal struct {
XMLName xml.Name `xml:"animal"`
Id int `xml:"id,attr"`
Name string `xml:"name"`
Origin []string `xml:"origin"`
}
panda := &Animal{Id: 001, Name: "Panda"}
panda.Origin = []string{"China", "SiChuan"}
out, _ := xml.MarshalIndent(panda, " ", " ")
println(string(out))
println(xml.Header + string(out))
var p Animal
if err := xml.Unmarshal(out, &p); err != nil {
panic(err)
}
println(p)
输出结果:
<animal id="1">
<name>Panda</name>
<origin>China</origin>
<origin>SiChuan</origin>
</animal>
<?xml version="1.0" encoding="UTF-8"?>
<animal id="1">
<name>Panda</name>
<origin>China</origin>
<origin>SiChuan</origin>
</animal>
{{ animal} 1 Panda [China SiChuan]}