XML Array Unmarshaling in Go: Captureing All Elements
प्रदान किए गए कोड में, समस्या तब उत्पन्न होती है जब एक XML स्ट्रिंग को अनमर्शल किया जाता है जिसमें कई उदाहरण होते हैं एक विशेष संरचना प्रकार. वर्तमान कार्यान्वयन केवल सरणी के पहले तत्व को पुनः प्राप्त करता है।
इस सीमा को पार करने के लिए, निम्नलिखित दृष्टिकोण पर विचार करें:
xml.Decoder का उपयोग करने से हमें XML डेटा पर पुनरावृति करने और संरचना के सभी उदाहरणों को पुनः प्राप्त करने की अनुमति मिलती है। यहाँ अद्यतन कोड है:
पैकेज मुख्य
आयात (
"बाइट्स"
"एन्कोडिंग/एक्सएमएल"
"एफएमटी"
"आईओ"
"लकड़ी का लट्ठा"
)
HostSystemIdentificationInfo struct टाइप करें {
IdentiferValue स्ट्रिंग `xml:"identifierValue"`
पहचानकर्ता प्रकार संरचना {
लेबल स्ट्रिंग `xml:"label"`
सारांश स्ट्रिंग `xml:"सारांश"`
कुंजी स्ट्रिंग `xml:"कुंजी"`
} `xml:"identifierType"`
}
func मुख्य() {
d := xml.NewDecoder(बाइट्स.न्यूबफ़रस्ट्रिंग(VV))
के लिए {
var t HostSystemIdentificationInfo
err := d.Decode(&t)
अगर गलती == io.EOF {
तोड़ना
}
यदि त्रुटि !=शून्य {
लॉग.घातक(त्रुटि)
}
fmt.Println(t)
}
}
const VV = `
package main
import (
"bytes"
"encoding/xml"
"fmt"
"io"
"log"
)
type HostSystemIdentificationInfo struct {
IdentiferValue string `xml:"identifierValue"`
IdentiferType struct {
Label string `xml:"label"`
Summary string `xml:"summary"`
Key string `xml:"key"`
} `xml:"identifierType"`
}
func main() {
d := xml.NewDecoder(bytes.NewBufferString(VV))
for {
var t HostSystemIdentificationInfo
err := d.Decode(&t)
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
fmt.Println(t)
}
}
const VV = `<HostSystemIdentificationInfo xsi:type="HostSystemIdentificationInfo">
<identifierValue> unknown</identifierValue>
<identifierType>
<label>Asset Tag</label>
<summary>Asset tag of the system</summary>
<key>AssetTag</key>
</identifierType>
</HostSystemIdentificationInfo>
<HostSystemIdentificationInfo xsi:type="HostSystemIdentificationInfo">
<identifierValue>Dell System</identifierValue>
<identifierType>
<label>OEM specific string</label>
<summary>OEM specific string</summary>
<key>OemSpecificString</key>
</identifierType>
</HostSystemIdentificationInfo>
<HostSystemIdentificationInfo xsi:type="HostSystemIdentificationInfo">
<identifierValue>5[0000]</identifierValue>
<identifierType>
<label>OEM specific string</label>
<summary>OEM specific string</summary>
<key>OemSpecificString</key>
</identifierType>
</HostSystemIdentificationInfo>
<HostSystemIdentificationInfo xsi:type="HostSystemIdentificationInfo">
<identifierValue>REDACTED</identifierValue>
<identifierType>
<label>Service tag</label>
<summary>Service tag of the system</summary>
<key>ServiceTag</key>
</identifierType>
</HostSystemIdentificationInfo>`
[प्लेग्राउंड लिंक](http://play.golang.org/p/c7-E_Afe-3 )
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3