Unmarshal Array Elements dalam XML: Dapatkan Semua Elemen, Bukan Sekadar Yang Pertama
Apabila unmarshal array XML di Golang menggunakan xml.Unmarshal( []bait(p.Val.Inner), &t), anda mungkin menghadapi situasi di mana hanya elemen pertama sedang diambil. Untuk menyelesaikan isu ini, gunakan xml.Decoder dan gunakan kaedah Nyahkodnya berulang kali.
Langkah-Langkah untuk Menyahkawal Semua Elemen Tatasusunan XML:
Kod Golang Diubah Suai:
<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>
Sampel Output:
[{ 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}}]
Dengan menggunakan xml.Decoder dan berulang kali menggunakan Decode, anda boleh berjaya mendapatkan semula semua elemen dalam tatasusunan XML, menyelesaikan isu hanya mendapatkan elemen pertama.
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Semua Elemen dalam Tatasusunan XML di Golang tanpa Mengehadkan Hanya Elemen Pertama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!