golang中encoding/xml的使用注意事项
发布时间:2020-12-16 18:24:22 所属栏目:大数据 来源:网络整理
导读:1.使用xml.Name的第一个名称作为整个XML文档的根节点。 2.凡是需要解析的XML内容,需要使用结构体的tag属性,反射出xml的特性,包含xml的名称,是否是属性、注释等。 3.凡是需要解析的节点,结构体的成员名称,首字母必须要大些 4.可以直接跳跃解析的父节点
1.使用xml.Name的第一个名称作为整个XML文档的根节点。 2.凡是需要解析的XML内容,需要使用结构体的tag属性,反射出xml的特性,包含xml的名称,是否是属性、注释等。 3.凡是需要解析的节点,结构体的成员名称,首字母必须要大些 4.可以直接跳跃解析的父节点(该父节点只存在逻辑结构,并不存储任何数据或者属性),可以使用>来表征。
golang的文档上的例子 type Email struct { Where string `xml:"where,attr"` Addr string } type Address struct { City,State string } type Result struct { XMLName xml.Name `xml:"Person"` Name string `xml:"FullName"` Phone string Email []Email Groups []string `xml:"Group>Value"` Address } v := Result{Name: "none",Phone: "none"} data := ` <Person> <FullName>Grace R. Emlin</FullName> <Company>Example Inc.</Company> <Email where="home"> <Addr>gre@example.com</Addr> </Email> <Email where='work'> <Addr>gre@work.com</Addr> </Email> <Group> <Value>Friends</Value> <Value>Squash</Value> </Group> <City>Hanga Roa</City> <State>Easter Island</State> </Person> ` err := xml.Unmarshal([]byte(data),&v) if err != nil { fmt.Printf("error: %v",err) return } fmt.Printf("XMLName: %#vn",v.XMLName) fmt.Printf("Name: %qn",v.Name) fmt.Printf("Phone: %qn",v.Phone) fmt.Printf("Email: %vn",v.Email) fmt.Printf("Groups: %vn",v.Groups) fmt.Printf("Address: %vn",v.Address) Output: XMLName: xml.Name{Space:"",Local:"Person"} Name: "Grace R. Emlin" Phone: "none" Email: [{home gre@example.com} {work gre@work.com}] Groups: [Friends Squash] Address: {Hanga Roa Easter Island} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |