Désagrégation des attributs XML avec des attributs inconnus dans Go
Dans Go, le package encoding/xml nous permet de rassembler et de désorganiser les données XML dans et à partir des structures de données Go. Cependant, par défaut, il ne prend en charge que la désorganisation des balises XML avec des attributs fixes connus à l'avance.
Attributs dynamiques en XML
Dans certains cas, les documents XML peuvent avoir des balises avec des attributs dynamiques qui ne sont pas connus à l’avance. Cela peut poser un défi lors de la désorganisation de ces données XML dans des structures Go.
Désorganisation des attributs dynamiques
Depuis fin 2017, Go prend en charge la désorganisation des balises XML avec des attributs dynamiques à l'aide de l'option xml:",any,attr" directive de balise. Cette directive demande au démarshaler de collecter tous les attributs dans la tranche xml.Attr.
Exemple :
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 le code ci-dessus est exécuté, il imprimera :
{ Attributes: [ {Name:ATTR1 Value:VALUE1} {Name:ATTR2 Value:VALUE2} ] }
Remarque :
Le La directive xml:",any,attr" ne collecte pas les attributs des balises imbriquées. Si vous devez collecter des attributs à partir de balises imbriquées, vous devrez créer un décodeur XML personnalisé.
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!