golangにおけるencoding/xmlの使用上の注意点
1866 ワード
1.XMLドキュメント全体のルートノードとしてxml.Nameの最初の名前を使用します.
2.解析が必要なXMLの内容は、構造体のtag属性を使用し、xmlの特性を反射し、xmlの名前、属性かどうか、注釈などを含む.
3.解析が必要なノードは、構造体のメンバー名、頭文字を大きくしなければならない.
4.解析した親ノードを直接スキップできます(この親ノードには論理構造のみが存在し、データや属性は格納されません).>を使用して特性化できます.
golangのドキュメントの例
Output:
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}