XML-Array-Unmarshaling in Go: Alle Elemente erfassen
Im bereitgestellten Code tritt das Problem beim Unmarshaling einer XML-Zeichenfolge auf, die mehrere Instanzen von enthält ein bestimmter Strukturtyp. Die aktuelle Implementierung ruft nur das erste Element des Arrays ab.
Um diese Einschränkung zu überwinden, ziehen Sie den folgenden Ansatz in Betracht:
Verwendung eines XML-Decoders
Durch die Verwendung eines xml.Decoder können wir die XML-Daten durchlaufen und alle Instanzen der Struktur abrufen. Hier ist der aktualisierte Code:
<code class="go">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>`</code>
Spielen mit Go:
[Playground Link](http://play.golang.org/p/c7-E_Afe -3)
Das obige ist der detaillierte Inhalt vonWie rufe ich alle Array-Elemente beim XML-Unmarshaling in Go ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!