go语言操作常见脚本内容都有现成的库来依赖, xml的库: encoding/xml
package main
import (
"encoding/xml" //加载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() {
//打开xml文件
file, err := os.Open("test.xml")
if err != nil {
fmt.Printf("error:%v", err)
return
}
defer file.Close()
//读取文件
data, err := ioutil.ReadAll(file)
//fmt.Println(data)
if err != nil {
fmt.Printf("error:%v", err)
return
}
v := Recurlyservers{}
//解析成对应的struct对象
err = xml.Unmarshal(data, &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Println(v)
}