Go笔记-XML
发布时间:2020-12-16 02:07:50 所属栏目:百科 来源:网络整理
导读:解析xml 示例xml:xml_test.xml ?xml version="1.0" encoding="utf-8"?servers version="1" server serverNameShanghai_VPN/serverName serverIP127.0.0.1/serverIP /server server serverNameBeijing_VPN/serverName serverIP127.0.0.2/serverIP /server/ser
解析xml示例xml:xml_test.xml <?xml version="1.0" encoding="utf-8"?> <servers version="1"> <server> <serverName>Shanghai_VPN</serverName> <serverIP>127.0.0.1</serverIP> </server> <server> <serverName>Beijing_VPN</serverName> <serverIP>127.0.0.2</serverIP> </server> </servers> type Servers 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 ReadXml() { f,err := os.Open("xml_test.xml") if err != nil { fmt.Println(err) return } defer f.Close() data,err := ioutil.ReadAll(f) if err != nil { fmt.Println(err) return } servers := Servers{} err = xml.Unmarshal(data,&servers) if err != nil { fmt.Println(err) return } fmt.Printf("%#vn",servers) } 输出: xml.Servers{XMLName:xml.Name{Space:"",Local:"servers"},Version:"1",Svs:[]xml.Server{xml.Server{XMLName:xml.Name{Space:"",Local:"server"},ServerName:"Shanghai_VPN",ServerIP:"127.0.0.1"},xml.Server{XMLName:xml.Name{Space:"",ServerName:"Beijing_VPN",ServerIP:"127.0.0.2"}},Description:"rn <server>rn <serverName>Shanghai_VPN</serverName>rn <serverIP>127.0.0.1</serverIP>rn </server>rn <server>rn <serverName>Beijing_VPN</serverName>rn <serverIP>127.0.0.2</serverIP>rn </server>rn"} 结构体中tag标签的写法参考xml.Unmarshal上的注释。 输出xml这里省略了Servers和Server两个的声明,见上面的定义。 servers := &Servers{Version: "1"} servers.Svs = append(servers.Svs,Server{ServerName: "Shanghai_VPN",ServerIP: "127.0.0.1"}) servers.Svs = append(servers.Svs,Server{ServerName: "Beijing_VPN",ServerIP: "127.0.0.2"}) //data,err := xml.Marshal(servers) data,err := xml.MarshalIndent(servers,""," ") if err != nil { fmt.Println(err) return } fmt.Println(xml.Header) fmt.Println(string(data)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |