Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menyahmarshal XML Secara Terus ke dalam Peta Go?

Bagaimanakah Saya Boleh Menyahmarshal XML Secara Terus ke dalam Peta Go?

Barbara Streisand
Lepaskan: 2024-12-18 01:53:10
asal
261 orang telah melayarinya

How Can I Efficiently Unmarshal XML Directly into a Go Map?

Menyahmarshall XML Terus ke dalam Peta

Menyahmarshall data XML ke dalam struktur perantaraan yang kemudiannya ditukar menjadi peta boleh memakan masa untuk set data yang besar. Dalam kes sedemikian, pembongkaran terus ke dalam peta ialah pendekatan yang lebih cekap.

Untuk menyahmarshal XML terus ke dalam peta, anda boleh mencipta jenis tersuai yang melaksanakan antara muka xml.Unmarshaler. Jenis ini akan mengendalikan proses unmarshaling dan menyimpan data dalam rentetan[rentetan] peta.

Contoh:

type classAccessesMap struct {
    m map[string]string
}

// UnmarshalXML implements the xml.Unmarshaler interface to unmarshal XML directly into the map.
func (c *classAccessesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    c.m = map[string]string{}

    key := ""
    val := ""

    // Iteratively parse XML tokens.
    for {
        t, _ := d.Token()
        switch tt := t.(type) {

        // TODO: Handle the inner structure parsing here.

        case xml.StartElement:
            key = tt.Name.Local

        case xml.EndElement:
            // Store the key-value pair in the map when the end of the "enabled" element is reached.
            if tt.Name.Local == "enabled" {
                c.m[key] = val
            }

            // Return nil when the end of the "classAccesses" element is reached.
            if tt.Name == start.Name {
                return nil
            }
        }
    }
}
Salin selepas log masuk

Penggunaan:

// Unmarshal the XML into the custom classAccessesMap type.
var classAccessesMap classAccessesMap
if err := xml.Unmarshal([]byte(xmlData), &classAccessesMap); err != nil {
    // Handle error
}

fmt.Println(classAccessesMap.m) // Prints the map containing the parsed data.
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal XML Secara Terus ke dalam Peta Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan