Go语言解析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}]

猜你喜欢

转载自blog.csdn.net/Charliewolf/article/details/84770525
今日推荐