golangにおけるencoding/xmlの使用上の注意点

1866 ワード

1.XMLドキュメント全体のルートノードとしてxml.Nameの最初の名前を使用します.
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 := `
    
        Grace R. Emlin
        Example Inc.
        
            [email protected]
        
        
            [email protected]
        
        
            Friends
            Squash
        
        Hanga Roa
        Easter Island
    
`
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
    fmt.Printf("error: %v", err)
    return
}
fmt.Printf("XMLName: %#v
", v.XMLName) fmt.Printf("Name: %q
", v.Name) fmt.Printf("Phone: %q
", v.Phone) fmt.Printf("Email: %v
", v.Email) fmt.Printf("Groups: %v
", v.Groups) fmt.Printf("Address: %v
", v.Address)

Output:
XMLName: xml.Name{Space:"", Local:"Person"}
Name: "Grace R. Emlin"
Phone: "none"
Email: [{home [email protected]} {work [email protected]}]
Groups: [Friends Squash]
Address: {Hanga Roa Easter Island}