加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读