Désassembler des éléments XML avec des attributs et des valeurs à virgule flottante
Pour décomplexer un élément XML avec un attribut et une valeur à virgule flottante, vous pouvez définir une structure Go avec les champs correspondants. Cependant, il y a quelques considérations concernant l'utilisation de la propriété xml.Name.
Dans l'élément XML fourni :
<code class="xml"><thing prop="1"> 1.23 </thing></code>
La structure ThingElem doit avoir les propriétés suivantes :
Option 1 : Avec XMLName
Dans cette option, vous pouvez ajouter un champ xml.Name à la structure ThingElem. Ce champ est généralement utilisé lorsque la structure XML est ambiguë. Dans ce cas, ce n'est pas nécessaire car il est clair que la struct correspond à l'élément thing.
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` // Do I even need this? Prop int `xml:"prop,attr"` Value float // ??? }</code>
Option 2 : Sans XMLName
Puisqu'il n'y a pas d'ambiguïté dans la structure XML, vous pouvez omettre le champ xml.Name.
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float // ??? }</code>
Désagrégation des valeurs à virgule flottante
Pour décomplexer correctement la valeur à virgule flottante, vous devez assurez-vous qu'il n'y a pas d'espaces dans le XML. Dans votre exemple, la valeur est 1,23, mais il est recommandé de supprimer les espaces et de la stocker sous la forme 1,23.
Désagrégation des données imbriquées
Vous pouvez également désorganiser les données imbriquées en définir une structure wrapper. Par exemple, le XML contient plusieurs éléments d'objet. Pour les désorganiser, vous devez définir une structure ThingWrapper :
<code class="go">type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
Exemple de code complet
Voici un exemple de code complet qui désorganise les données XML fournies :
<code class="go">package main import ( "encoding/xml" "fmt" ) type Root struct { Things []Thing `xml:"thing"` } type Thing struct { Prop int `xml:"prop,attr"` Value float64 `xml:",chardata"` } func main() { data := `<root><thing prop="1">1.23</thing><thing prop="2">4.56</thing></root>` thing := &Root{} err := xml.Unmarshal([]byte(data), thing) if err != nil { fmt.Println(err) return } fmt.Println(thing) }</code>
Ce code imprimera les données XML analysées, y compris l'attribut prop et les valeurs à virgule flottante.
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!