Golang : Unmarshalling XML avec des attributs dynamiques
Introduction :
Dans Go, encoding/xml fournit un moyen efficace et polyvalent de gérer les données XML. Cependant, lorsqu'il s'agit d'éléments XML possédant des attributs dynamiques, la désorganisation devient difficile en raison du nombre inconnu et des types d'attributs présents.
Question :
Comment pouvez-vous désorganiser les balises XML avec attributs dynamiques dans Go alors que vous n'anticipez pas les attributs exacts qui seront rencontrés ?
Réponse :
Avant fin 2017, cela n'était pas directement pris en charge dans le démarshalling XML de Go. Cependant, grâce aux progrès du package encoding/xml, cette fonctionnalité a été implémentée.
Pour désorganiser les balises XML avec des attributs dynamiques, vous pouvez utiliser la syntaxe suivante :
type MyStruct struct { Attributes []xml.Attr `xml:",any,attr"` }
Voici un exemple pour illustrer son fonctionnement :
package main import ( "encoding/xml" "fmt" ) func main() { type MyStruct struct { Attributes []xml.Attr `xml:",any,attr"` } data := `<TAG ATTR1="VALUE1" ATTR2="VALUE2" />` var v MyStruct if err := xml.Unmarshal([]byte(data), &v); err != nil { panic(err) } fmt.Println(v.Attributes) }
Dans cet exemple, le type MyStruct définit un champ nommé Attributs. La balise xml:"...,any,attr" demande au programme de désagrégation d'attribuer tous les attributs XML à ce champ sous forme de tranches xml.Attr.
Lorsque le programme de désagrégation rencontre les données XML fournies dans la variable de données, il réussit à désorganiser les attributs inconnus (ATTR1 et ATTR2) dans le champ Attributs de la structure v. Cela permet une gestion dynamique des éléments XML avec différents ensembles d'attributs.
Notez que cette fonctionnalité nécessite Go version 1.9 ou ultérieure.
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!