Maison > développement back-end > Golang > Comment puis-je désorganiser XML avec des attributs dynamiques dans Go ?

Comment puis-je désorganiser XML avec des attributs dynamiques dans Go ?

Patricia Arquette
Libérer: 2024-11-20 11:44:04
original
279 Les gens l'ont consulté

How Can I Unmarshal XML with Dynamic Attributes in Go?

Démarshaling XML avec des attributs dynamiques dans Go

Dans Go, démarshaling XML avec des attributs dynamiques peut être un défi. Cependant, avec la récente résolution du problème 3633, il existe désormais un moyen simple et efficace de gérer cette situation.

Le problème : les attributs inconnus

Traditionnellement, lors du démarshaling XML dans Go, vous définir une structure avec des champs spécifiques pour correspondre aux éléments XML attendus. Cependant, que se passe-t-il lorsque vous rencontrez des balises XML avec des attributs que vous ne pouvez pas prédire ?

La solution : la balise ",any,attr"

La solution réside dans l'utilisation de la balise ",any,attr" " dans la définition de votre structure Go. Cette balise demande au démarshaler XML de collecter tous les attributs de l'élément spécifié dans une tranche de structures xml.Attr.

Exemple

Considérez l'extrait XML suivant :

<TAG ATTR1="VALUE1" ATTR2="VALUE2" />
Copier après la connexion

Pour transformer ce XML en une structure Go, vous pouvez utiliser le code suivant :

package main

import (
    "encoding/xml"
    "fmt"
)

func main() {
    var v struct {
        Attributes []xml.Attr `xml:",any,attr"`
    }

    data := `<TAG ATTR1="VALUE1" ATTR2="VALUE2" />`

    err := xml.Unmarshal([]byte(data), &v)
    if err != nil {
        panic(err)
    }
    fmt.Println(v)
}
Copier après la connexion

Lorsque vous exécutez ce code, la structure v sera renseignée avec les données suivantes :

{[]xml.Attr{
    {Name: {Local: "ATTR1"}, Value: "VALUE1"},
    {Name: {Local: "ATTR2"}, Value: "VALUE2"},
}}
Copier après la connexion

La tranche Attributs contient deux structures xml.Attr, chacune représentant l'un des attributs de la balise XML.

Conclusion

La balise ",any,attr" offre un moyen puissant et flexible pour désorganiser les balises XML avec des attributs dynamiques dans Go. En utilisant cette fonctionnalité, vous pouvez facilement gérer des structures XML imprévisibles et extraire les données dont vous avez besoin dans des structures personnalisé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