Go语言解析xml格式数据

本文介绍了如何使用Go语言解析XML格式的数据。通过Goland作为开发工具,解析XML文件与JSON文件的方法相类似,主要涉及Go语言中的xml包。示例中展示了如何根据XML文件结构创建对应的结构体,并进行数据的反序列化操作。

开发工具:Goland。

xml文件,解析与json文件解析非常相似。只是用了不同的包。

比如一个xml文件,内容如下

<?xml version="1.0" encoding="utf-8"?>
<servers version="1">
    <server>
        <serverName>Shanghai_VPN</serverName>
        <serverIP>127.0.0.1</serverIP>
    </server>
    <server>
        <serverName>Beijing_VPN</serverName>
        <serverIP>127.0.0.2</serverIP>
    </server>
</servers>

文件中有4个字段,serversserverserverNameserverIP,所以根据文件结构,构建两个结构体,


type server struct {
	XMLName    xml.Name `xml:"server"`
	ServerName string   `xml:"serverName"`
	ServerIp   string   `xml:"serverIP"`
}

type Recurlyservers struct {
	XMLName     xml.Name `xml:"servers"`
	Version     string   `xml:"version,attr"`
	Svs         []server `xml:"server"`
	Description string   `xml:",innerxml"`
}

接下来就是将读取到的数据,反序列化到结构体中,


func main() {
	file, err := os.Open("config/servers.xml")
	if err != nil {
		fmt.Println(err)
	}
	defer file.Close()
	body, err := ioutil.ReadAll(file)

	data := new(Recurlyservers)
	err = xml.Unmarshal(body, &data)
	fmt.Println(data.XMLName)
	fmt.Println(data.Description)
	fmt.Println(data.Version)
	fmt.Println(data.Svs)
}

运行结果

{ servers}

    <server>
        <serverName>Shanghai_VPN</serverName>
        <serverIP>127.0.0.1</serverIP>
    </server>
    <server>
        <serverName>Beijing_VPN</serverName>
        <serverIP>127.0.0.2</serverIP>
    </server>

1
[{{ server} Shanghai_VPN 127.0.0.1} {{ server} Beijing_VPN 127.0.0.2}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值