目录
1 被解析文件
<?xml version="1.0" encoding="utf-8" ?>
<servers version="1">
<server>
<serverName>Local_Web</serverName>
<serverIP>127.0.0.1</serverIP>
</server>
<server>
<serverName>Local_DB</serverName>
<serverIP>127.0.0.2</serverIP>
</server>
</servers>
2 解析代码
package main
import (
"encoding/xml"
"fmt"
"io/ioutil"
"os"
)
type RecurlyServers struct {
XMLName xml.Name `xml:"servers"`
Version string `xml:"version,attr"`
Svs []server `xml:"server"`
Description string `xml:",innerxml"`
}
type server struct {
XMLName xml.Name `xml:"server"`
ServerName string `xml:"serverName"`
ServerIP string `xml:"serverIP"`
}
func main() {
file, err := os.Open("D:\\go_workspace\\adapter11\\server.xml")
if err != nil {
fmt.Println("error:%v", err)
return
}
defer file.Close()
data, err := ioutil.ReadAll(file)
if err != nil {
fmt.Println("error:%v", err)
return
}
v := RecurlyServers{}
err = xml.Unmarshal(data, &v)
if err != nil {
fmt.Println("error:%v", err)
return
}
fmt.Println(v)
}
ps:
- struct中的 `xml:"servers"` ,外层不是单引号
- struct定义与xml节点一致
3 运行结果
{{ servers} 1 [{{ server} Local_Web 127.0.0.1} {{ server} Local_DB 127.0.0.2}]
<server>
<serverName>Local_Web</serverName>
<serverIP>127.0.0.1</serverIP>
</server>
<server>
<serverName>Local_DB</serverName>
<serverIP>127.0.0.2</serverIP>
</server>
}
golang版本 1.17.6