Go (Golang) में XML के साथ कार्य: मानक लाइब्रेरी encoding/xml

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) में XML के साथ कार्य: encoding/xml पैकेज के लिए विस्तृत मार्गदर्शिका



Go (Golang) में आधुनिक विकास में, XML डेटा को संसाधित करने का कार्य काफी सामान्य है - पुराने सिस्टम के साथ एकीकरण से लेकर SOAP सेवाओं में डेटा विनिमय तक। Go की मानक लाइब्रेरी एक शक्तिशाली और लचीला पैकेज encoding/xml प्रदान करती है, जो XML दस्तावेज़ों को प्रभावी ढंग से पार्स, बनाने और रूपांतरित करने की अनुमति देता है। इस लेख में, हम Go में XML के साथ कार्य करने की सभी प्रमुख क्षमताओं पर विस्तार से चर्चा करेंगे।



encoding/xml पैकेज की मुख्य विशेषताएँ



encoding/xml पैकेज Go संरचनाओं को XML में क्रमबद्ध (मार्शलिंग) करने और XML को वापस संरचनाओं में अक्रमबद्ध (अनमार्शलिंग) करने के लिए एक सरल इंटरफ़ेस लागू करता है। यह समर्थन करता है:



  • Go संरचनाओं को XML दस्तावेज़ों में और वापस रूपांतरित करना
  • विशेषताओं, नेस्टेड तत्वों और नेमस्पेस के साथ कार्य
  • xml.Decoder के माध्यम से बड़ी XML फ़ाइलों का स्ट्रीमिंग पार्सिंग
  • स्ट्रक्चर टैग का उपयोग करके अनुकूलन योग्य क्रमबद्धता नियम


पैकेज स्थापना और आयात



encoding/xml पैकेज Go की मानक लाइब्रेरी का हिस्सा है, इसलिए अतिरिक्त स्थापना की आवश्यकता नहीं है। उपयोग के लिए, बस इसे आयात करें:



import (    "encoding/xml"    "fmt"    "os")


मार्शलिंग: Go संरचना → XML



Go संरचना को XML में रूपांतरित करने के लिए xml.Marshal() या स्वरूपित आउटपुट के लिए xml.MarshalIndent() फ़ंक्शन का उपयोग किया जाता है। एक उदाहरण देखें:



type Person struct {    XMLName   xml.Name `xml:"person"`    ID        int      `xml:"id,attr"`    FirstName string   `xml:"name>first"`    LastName  string   `xml:"name>last"`    Age       int      `xml:"age"`}

func main() { p := Person{ ID: 123, FirstName: "इवान", LastName: "पेत्रोव", Age: 30, }

output, err := xml.MarshalIndent(p, "", " ") if err != nil { fmt.Printf("मार्शलिंग त्रुटि: %v", err) return }

fmt.Println(string(output))}


निष्पादन परिणाम:



<person id="123">  <name>    <first>इवान</first>    <last>पेत्रोव</last>  </name>  <age>30</age></person>


अनमार्शलिंग: XML → Go संरचना



विपरीत प्रक्रिया - XML डेटा को Go संरचना में रूपांतरित करना - xml.Unmarshal() का उपयोग करके किया जाता है:



func unmarshalExample() {    xmlData := `<person id="456">  <name>    <first>मारिया</first>    <last>सिदोरोवा</last>  </name>  <age>25</age></person>`

var p Person err := xml.Unmarshal([]byte(xmlData), &p) if err != nil { fmt.Printf("अनमार्शलिंग त्रुटि: %v", err) return }

fmt.Printf("ID: %d, नाम: %s %s, आयु: %d", p.ID, p.FirstName, p.LastName, p.Age) // आउटपुट: ID: 456, नाम: मारिया सिदोरोवा, आयु: 25}


विशेषताओं और नेस्टेड तत्वों के साथ कार्य



encoding/xml पैकेज मैपिंग को नियंत्रित करने के लिए स्ट्रक्चर टैग का उपयोग करता है। मुख्य टैग निर्देश:



  • xml:"name" — तत्व का नाम
  • xml:"name,attr" — तत्व की विशेषता
  • xml:"parent>child" — नेस्टेड तत्व
  • xml:",chardata" — टेक्स्ट सामग्री
  • xml:",innerxml" — तत्व के अंदर कच्चा XML
  • xml:",comment" — XML टिप्पणी
  • xml:"-" — फ़ील्ड को अनदेखा करें


बड़ी XML फ़ाइलों का स्ट्रीमिंग पार्सिंग



बड़े XML दस्तावेज़ों (जैसे, गीगाबाइट आकार की फ़ाइलें) को संसाधित करने के लिए स्ट्रीमिंग पार्सर xml.Decoder का उपयोग किया जाता है। यह मेमोरी को लोड नहीं करने देता है

अनुशंसाएँ