This is a creation in Article, where the information may have evolved or changed.
1. Servers.xml
1 <?XML version= "1.0" encoding= "Utf-8"?>2 <Serversversion= "1">3 <Server>4 <ServerName>Shanghai_vpn</ServerName>5 <ServerIP>127.0.0.1</ServerIP>6 </Server>7 <Server>8 <ServerName>Beijing_vpn</ServerName>9 <ServerIP>127.0.0.2</ServerIP>Ten </Server> One </Servers>
2. Main.go
1 Package Main2 3 Import (4 "Encoding/xml"5 "FMT"6 "Io/ioutil"7 "OS"8 )9 Ten type recurlyservers struct { OneXMLName XML. Name ' xml:"Servers"` AVersion string ' xml:"version,attr"` -Svs []server ' xml:"Server"` - } the - type server struct { -ServerName string ' xml:"ServerName"` -ServerIP string ' xml:"ServerIP"` + } - + Func Main () { A Generatexml () at } - - func generatexml () { -V: = &recurlyservers{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.1"}) inOutput, err: = XML. Marshalindent (V," "," ") - ifErr! =Nil { toFmt. Println ("error:%v\n", Err) + } - OS. Stdout.write ([]byte (XML. Header)) the OS. Stdout.write (output) * } $ Panax Notoginseng func unmarshalxml () { -File, err: = OS. Open ("Servers.xml") the ifErr! =Nil { +Fmt. Println ("Error:%v", Err) A return the } + defer file. Close () -Data, err: =Ioutil. ReadAll (file) $ ifErr! =Nil { $Fmt. Println ("Error:%v, Err") - return - } theV: =recurlyservers{} -Err = XML. Unmarshal (Data, &v)Wuyi ifErr! =Nil { theFmt. Println ("Error:%v", Err) - return Wu } - FMT. Println (v) About}