Maison > développement back-end > Golang > le corps du texte

Comment désassembler des éléments XML avec des attributs et des valeurs à virgule flottante dans des structures Go ?

Susan Sarandon
Libérer: 2024-10-24 02:40:29
original
868 Les gens l'ont consulté

How to Unmarshal XML Elements with Attributes and Floating-Point Values into Go Structs?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!