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
Barbara Streisandasal
2024-12-18 01:53:10265semak imbas

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

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.

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!

Kenyataan:
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