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
Libérer: 2024-12-05 16:21:11
original
1049 Les gens l'ont consulté

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
            }
        }
    }
}
Copier après la connexion

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal