校园网站html模板,烟台公司网站开发,网站备案查询系统,金融投资网站#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力#xff0c;虚度你的光阴#xff0c;每天迈出一小步#xff0c;回头时发现已经走了很远。
#x1f4d7;概念 在 Go 语言中#xff0c;处理 XML 数据主要使用 encoding/xml 包。这个包提供了…
Don’t worry , just coding! 内耗与overthinking只会削弱你的精力虚度你的光阴每天迈出一小步回头时发现已经走了很远。
概念 在 Go 语言中处理 XML 数据主要使用 encoding/xml 包。这个包提供了序列化编码和反序列化解码XML 数据的功能。 代码
package main//导入 encoding/xml 包用于处理 XML 数据导入 fmt 包用于格式化输出。
import (encoding/xmlfmt
)// Plant 结构体用于表示植物信息。
// XMLName 字段用于指定 XML 的根元素名称为 plant。
// Id 字段表示植物的 ID使用 XML 属性 id。
// Name 字段表示植物的名称。
// Origin 字段是一个字符串切片表示植物的原产地。
type Plant struct {XMLName xml.Name xml:plant //注意首字母要大写Id int xml:id,attrName string xml:nameOrigin []string xml:origin
}// 为 Plant 结构体定义了一个 String 方法方便打印植物的详细信息。
func (p Plant) String() string {return fmt.Sprintf(Plant id%v, name%v, origin%v,p.Id, p.Name, p.Origin)
}func main() {//创建一个 Plant 实例 coffeeID 为 27名称为 Coffee并设置原产地为 Ethiopia 和 Brazil。coffee : Plant{Id: 27, Name: Coffee}coffee.Origin []string{Ethiopia, Brazil}//使用 xml.MarshalIndent 将 coffee 对象编码为格式化的 XML 字符串并将结果存储在 out 中。//MarshalIndent 函数的第二个和第三个参数用于指定缩进格式。out, _ : xml.MarshalIndent(coffee, , )//打印XMLfmt.Println(string(out))//在输出中添加 XML 头部?xml version1.0 encodingUTF-8?并打印完整的 XML。fmt.Println(xml.Header string(out))//创建一个空的 Plant 变量 p。var p Plant//使用 xml.Unmarshal 将之前生成的 XML 字符串解码到 p 中。if err : xml.Unmarshal(out, p); err ! nil {//如果解码失败则触发 panic。panic(err)}//打印解码后的 Plant 对象。fmt.Println(p)//创建另一个 Plant 实例 tomatoID 为 81名称为 Tomato原产地为 Mexico 和 California。tomato : Plant{Id: 81, Name: Tomato}tomato.Origin []string{Mexico, California}//定义了一个 Nesting 结构体用于表示一个包含多个植物的集合。type Nesting struct { //这是一个嵌套结构体//XMLName 字段指定根元素名称为 nesting。XMLName xml.Name xml:nesting//Plants 字段是一个指向 Plant 结构体切片的指针表示嵌套的植物元素。Plants []*Plant xml:parentchildplant}//创建一个 Nesting 实例nesting : Nesting{}//将 coffee 和 tomato 添加到 Plants 切片中。nesting.Plants []*Plant{coffee, tomato}//xml.MarshalIndent 将 nesting 对象编码为格式化的 XML 字符串并打印结果。out, _ xml.MarshalIndent(nesting, , )fmt.Println(string(out))
}//输出
//plant id27
// nameCoffee/name
// originEthiopia/origin
// originBrazil/origin
// /plant
//?xml version1.0 encodingUTF-8?
// plant id27
// nameCoffee/name
// originEthiopia/origin
// originBrazil/origin
// /plant
//Plant id27, nameCoffee, origin[Ethiopia Brazil]
// nesting
// parent
// child
// plant id27
// nameCoffee/name
// originEthiopia/origin
// originBrazil/origin
// /plant
// plant id81
// nameTomato/name
// originMexico/origin
// originCalifornia/origin
// /plant
// /child
// /parent
// /nesting
理解
基本概念
结构体标签 通过结构体标签定义 XML 元素和属性的名称。 使用 xml 标签来指定 XML 的元素名和属性。编码Marshal 将 Go 结构体转换为 XML 格式的字符串。xml.MarshalIndent(coffee, “”, )解码Unmarshal 将 XML 格式的字符串转换为 Go 结构体。xml.Unmarshal(out, p) Tips
注意事项
错误处理在编码和解码过程中务必检查错误以确保数据处理的正确性。嵌套结构体可以定义嵌套的结构体以表示更复杂的 XML 结构。数组和切片可以使用切片来表示 XML 中的多个元素。
无人扶我青云志我自踏雪至山巅。