खोज…
टिप्पणियों
हालांकि encoding/xml
पैकेज के कई उपयोगों में एक गो struct
लिए मार्शलिंग और अनमैर्शलिंग शामिल हैं, यह ध्यान देने योग्य है कि यह प्रत्यक्ष मैपिंग नहीं है। पैकेज प्रलेखन राज्यों:
XML तत्वों और डेटा संरचनाओं के बीच मानचित्रण स्वाभाविक रूप से त्रुटिपूर्ण है: XML तत्व अनाम मानों का एक क्रम-निर्भर संग्रह है, जबकि एक डेटा संरचना नाम-मानों का एक क्रम-स्वतंत्र संग्रह है।
सरल, अनियंत्रित, कुंजी-मूल्य वाले जोड़े के लिए, एक अलग एन्कोडिंग का उपयोग करना जैसे कि Gob या JSON एक बेहतर फिट हो सकता है। ऑर्डर किए गए डेटा या डेटा के इवेंट / कॉलबैक आधारित धाराओं के लिए, XML सबसे अच्छा विकल्प हो सकता है।
डेटा के साथ नेस्टेड तत्वों की बुनियादी डिकोडिंग / अनमर्सहॉलिंग
XML तत्वों में अक्सर घोंसला होता है, विशेषताओं और / या चरित्र डेटा के रूप में डेटा होता है। इस डेटा को कैप्चर करने का तरीका उन मामलों के लिए क्रमशः ,attr
और ,chardata
का उपयोग करके है।
var doc = `
<parent>
<child1 attr1="attribute one"/>
<child2>and some cdata</child2>
</parent>
`
type parent struct {
Child1 child1 `xml:"child1"`
Child2 child2 `xml:"child2"`
}
type child1 struct {
Attr1 string `xml:"attr1,attr"`
}
type child2 struct {
Cdata1 string `xml:",cdata"`
}
func main() {
var obj parent
err := xml.Unmarshal([]byte(doc), &obj)
if err != nil {
log.Fatal(err)
}
fmt.Println(obj.Child2.Cdata1)
}