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

केवल पहले तत्व तक सीमित किए बिना गोलांग में XML ऐरे में सभी तत्वों को कैसे पुनः प्राप्त करें?

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

How to Retrieve All Elements in an XML Array in Golang without Limiting to Just the First Element?

XML में अनमर्शल ऐरे तत्व: सभी तत्वों को पुनः प्राप्त करें, न कि केवल पहले वाले को

जब xml.Unmarshal का उपयोग करके गोलांग में एक XML ऐरे को अनमर्शल किया जाए []बाइट(p.Val.Inner), &t), आपको ऐसी स्थिति का सामना करना पड़ सकता है जहां केवल पहला तत्व पुनर्प्राप्त किया जा रहा है। इस समस्या को हल करने के लिए, xml.Decoder का उपयोग करें और इसकी डिकोड विधि को बार-बार लागू करें।

सभी XML ऐरे तत्वों को अनमर्शल करने के चरण:

  1. एक नया xml बनाएं। डिकोडर xml.NewDecoder(bytes.NewBufferString(VV)) का उपयोग करते हुए, जहां VV XML स्ट्रिंग है जिसमें सरणी तत्व शामिल हैं।
  2. प्रत्येक XML तत्व को संसाधित करने के लिए एक लूप दर्ज करें:
  3. एक वेरिएबल t घोषित करें लक्ष्य स्लाइस प्रकार का (उदाहरण के लिए, HostSystemIdentificationInfo)।
  4. अगले XML तत्व को t वेरिएबल में अनमर्शल करने के लिए d.Decode(&t) पर कॉल करें।
  5. चरण 2-4 को d तक दोहराएँ। डिकोड(&t) कॉल रिटर्न io.EOF.

संशोधित गोलांग कोड:

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>`

नमूना आउटपुट:

[{ unknown {Asset Tag Asset tag of the system AssetTag}}]
[{Dell System {OEM specific string OEM specific string OemSpecificString}}]
[{5[0000] {OEM specific string OEM specific string OemSpecificString}}]
[{REDACTED {Service tag Service tag of the system ServiceTag}}]

xml.Decoder का उपयोग करके और बार-बार डिकोड को लागू करके, आप XML सरणी के भीतर सभी तत्वों को सफलतापूर्वक पुनर्प्राप्त कर सकते हैं, केवल पहले प्राप्त करने की समस्या का समाधान कर सकते हैं तत्व।

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

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

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

Copyright© 2022 湘ICP备2022001581号-3