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
Patricia Arquetteoriginal
2024-11-20 11:44:04282parcourir

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

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

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

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!

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