Posted on 2013-08-12 17:03
oathleo 閱讀(1625)
評論(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)
}