"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में XML अनमर्शलिंग के दौरान सभी ऐरे तत्वों को कैसे पुनः प्राप्त करें?

गो में XML अनमर्शलिंग के दौरान सभी ऐरे तत्वों को कैसे पुनः प्राप्त करें?

2024-11-11 को प्रकाशित
ब्राउज़ करें:898

How to Retrieve All Array Elements During XML Unmarshaling in Go?

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 = ` अज्ञातएसेट टैगलेबल> सिस्टम का एसेट टैगसारांश> एसेटटैगकुंजी> Dell Systemओईएम विशिष्ट स्ट्रिंगलेबल> ओईएम विशिष्ट स्ट्रिंगसारांश> OemSpecificString5[0000]ओईएम विशिष्ट स्ट्रिंगलेबल> ओईएम विशिष्ट स्ट्रिंगसारांश> OemSpecificStringREDACTEDसेवा टैगलेबल> सिस्टम का सेवा टैगसारांश> सर्विसटैगकुंजी> `

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 )

विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729694416 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3