Maison > développement back-end > Golang > XML peut-il être intégré directement dans une Go Map pour améliorer les performances ?

XML peut-il être intégré directement dans une Go Map pour améliorer les performances ?

Patricia Arquette
Libérer: 2024-12-03 13:33:14
original
240 Les gens l'ont consulté

Can XML be Unmarhaled Directly into a Go Map to Improve Performance?

Désassembler du XML directement dans une carte

Problème :

Désassembler du XML dans une structure puis le convertir en une carte prend du temps pour les grands ensembles de données. Existe-t-il un moyen de désorganiser directement dans une carte ?

XML :

<classAccesses>
    <apexClass>AccountRelationUtility</apexClass>
    <enabled>true</enabled>
</classAccesses>
Copier après la connexion

Struct actuel :

type classAccesses struct {
    ApexClass string `xml:"apexClass"`
    Enabled   string `xml:"enabled"`
}

type diffs struct {
    ClassAccesses []classAccesses `xml:"classAccesses"`
}
Copier après la connexion

Désiré Map :

map[string]string {
    "ApexClass": "enabled"
}
Copier après la connexion

Solution :

Implémentez l'interface xml.Unmarshaller pour rassembler les données directement dans une chaîne map[string].

type classAccessesMap struct {
    m map[string]string
}

func (c *classAccessesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    c.m = map[string]string{}

    key := ""
    val := ""

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

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

Solution partielle :

Visitez https://play.golang.org/p/7aOQ5mcH6zQ pour une implémentation partielle.

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