Maison >développement back-end >Golang >Comment puis-je directement intégrer du XML dans une Go Map pour un traitement optimisé des données ?

Comment puis-je directement intégrer du XML dans une Go Map pour un traitement optimisé des données ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-05 16:21:111040parcourir

How Can I Directly Unmarshal XML into a Go Map for Optimized Data Processing?

Désassembler directement du XML dans une carte

Désassembler du XML directement dans une carte peut optimiser le traitement des données en éliminant l'étape de conversion de structure intermédiaire.

Mise en œuvre :

Pour y parvenir, créez un type qui implémente l'interface xml.Unmarshaller, permettant le mappage direct des données XML dans une chaîne map[string].

type classAccessesMap struct {
    m map[string]string
}

// UnmarshalXML implements the xml.Unmarshaller interface
func (c *classAccessesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    c.m = make(map[string]string)

    var key, val string

    for {
        t, _ := d.Token()
        switch tt := t.(type) {

            // TODO: parse the inner structure

        case xml.StartElement:
            fmt.Println(">", tt)

        case xml.EndElement:
            fmt.Println("<", tt)
            if tt.Name == start.Name {
                return nil
            }

            if tt.Name.Local == "enabled" {
                c.m[key] = val
            }
        }
    }
}

Utilisation :

Appliquer la personnalisation tapez à l'opération unmarshal pour mapper directement les données XML dans une carte :

// Unmarshalling into a map
var cm classAccessesMap
err := xml.Unmarshal([]byte(`<classAccesses>\n    <apexClass>AccountRelationUtility</apexClass>\n    <enabled>true</enabled>\n</classAccesses>`), &cm)
if err != nil {
    fmt.Println(err)
}

Cette approche rationalise le traitement des données en évitant la surcharge de doubles conversions, ce qui entraîne des performances améliorées pour les grands ensembles de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn