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