前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go-标准库-encoding(二)

Go-标准库-encoding(二)

原创
作者头像
堕落飞鸟
发布2023-04-22 08:56:45
2370
发布2023-04-22 08:56:45
举报
文章被收录于专栏:飞鸟的专栏

XML 编码和解码

XML(Extensible Markup Language)是一种可扩展的标记语言,用于数据交换和存储。Go 标准库中的 encoding/xml 包提供了 XML 数据的编码和解码功能。

编码

encoding/xml 包中的 Marshal() 函数可以将 Go 中的结构体、map、切片等数据类型编码成 XML 格式的字符串。下面是一个简单的 XML 编码示例:

代码语言:javascript
复制
package main

import (
	"encoding/xml"
	"fmt"
)

type Person struct {
	XMLName xml.Name `xml:"person"`
	Name    string   `xml:"name"`
	Age     int      `xml:"age"`
}

func main() {
	p := Person{
		Name: "Alice",
		Age:  18,
	}
	b, err := xml.MarshalIndent(p, "", "    ")
	if err != nil {
		fmt.Println("error:", err)
		return
	}
	fmt.Println(string(b))
}

在上面的示例代码中,我们定义了一个名为 Person 的结构体,该结构体有两个字段 NameAge,使用 xml 标签指定了在 XML 格式中对应的元素名。在 main() 函数中,我们创建了一个 Person 类型的变量 p,然后使用 xml.MarshalIndent() 函数将其编码成 XML 格式的字符串,并打印出来。

解码

encoding/xml 包中的 Unmarshal() 函数可以将 XML 格式的字符串解码成 Go 中的数据类型。下面是一个简单的 XML 解码示例:

代码语言:javascript
复制
package main

import (
	"encoding/xml"
	"fmt"
)

type Person struct {
	XMLName xml.Name `xml:"person"`
	Name    string   `xml:"name"`
	Age     int      `xml:"age"`
}

func main() {
	xmlStr := `<person><name>Bob</name><age>20</age></person>`
	var p Person
	err := xml.Unmarshal([]byte(xmlStr), &p)
	if err != nil {
		fmt.Println("error:", err)
		return
	}
	fmt.Println(p)
}

在上面的示例代码中,我们定义了一个名为 Person 的结构体,该结构体有两个字段 NameAge,使用 xml 标签指定了在 XML 格式中对应的元素名。在 main() 函数中,我们定义了一个 XML 格式的字符串 xmlStr,然后使用 xml.Unmarshal() 函数将其解码成 Person 类型的变量 p,最后打印出 p

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • XML 编码和解码
    • 编码
      • 解码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档