Désagrégation d'éléments XML dans des structures Go
Considérez l'élément XML suivant, qui inclut un attribut et une valeur à virgule flottante :
<thing prop="1"> 1.23 </thing> <thing prop="2"> 4.56 </thing>
Pour transformer ce XML en une structure Go, deux approches de conception peuvent être utilisées :
Avec la propriété XMLName :
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` Prop int `xml:"prop,attr"` Value float64 // ??? }</code>
Dans ce cas , le champ XMLName est utilisé pour spécifier que la structure représente l'élément XML « chose ». Cependant, il n'est pas toujours nécessaire d'inclure ce champ dans la définition de la structure.
Sans propriété XMLName :
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float64 // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
Dans cette approche, la structure ThingElem n'est pas marshalée dans une structure wrapper ThingWrapper. La balise xml:"thing" sur la structure wrapper indique que ThingElem doit représenter l'élément XML "thing".
Détermination du type de champ de valeur :
Lors de la définition du Champ de valeur, il est important de noter que l'élément XML contient des données de caractères (contenu texte) représentant la valeur à virgule flottante. Pour annuler correctement cela, les modifications suivantes doivent être apportées :
Supprimer les espaces de la valeur :
Les données XML contiennent des espaces dans les valeurs à virgule flottante. Ces espaces doivent être supprimés avant le démarshalage.
Utiliser l'annotation ",chardata" :
Le contenu de la balise XML peut être référencé à l'aide de l'annotation ",chardata" dans la définition du champ de structure :
<code class="go">Value float64 `xml:",chardata"`</code>
En incorporant ces modifications et en vous assurant que les données XML sont exemptes d'espaces, vous pouvez réussir à désassembler le XML donné dans une structure Go en utilisant l'une des approches de conception mentionnées ci-dessus.
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!