Posted on 2013-08-12 17:03
oathleo 阅读(1618)
评论(0) 编辑 收藏 所属分类:
Golang
将xml文件解析成对应的struct对象是通过xml.Unmarshal
来完成的,这个过程是如何实现的?可以看到我们的struct定义后面多了一些类似于xml:"serverName"
这样的内容,这个是struct的一个特性,它们被称为 struct tag,它们是用来辅助反射的。
package main
import (
"encoding/xml"
"fmt"
"os"
)
type Servers struct {
XMLName xml.Name `xml:"servers"`
Version string `xml:"version,attr"`
Svs []server `xml:"server"`
}
type server struct {
ServerName string `xml:"serverName"`
ServerIP string `xml:"serverIP"`
}
func main() {
v := &Servers{Version: "1"}
v.Svs = append(v.Svs, server{"Shanghai_VPN", "127.0.0.1"})
v.Svs = append(v.Svs, server{"Beijing_VPN", "127.0.0.2"})
output, err := xml.MarshalIndent(v, " ", " ")
if err != nil {
fmt.Printf("error: %v\n", err)
}
os.Stdout.Write([]byte(xml.Header))
os.Stdout.Write(output)
}