Wie entmarshaliere ich XML-Elemente mit Attributen und Gleitkommawerten in Go-Strukturen?

Susan Sarandon
Freigeben: 2024-10-24 02:40:29
Original
868 Leute haben es durchsucht

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

Unmarshaling von XML-Elementen in Go-Strukturen

Betrachten Sie das folgende XML-Element, das ein Attribut und einen Gleitkommawert enthält:

<thing prop="1">
  1.23
</thing>
<thing prop="2">
  4.56
</thing>
Nach dem Login kopieren

Um dieses XML in eine Go-Struktur zu entpacken, können zwei Entwurfsansätze verwendet werden:

Mit XMLName-Eigenschaft:

<code class="go">type ThingElem struct {
    XMLName xml.Name `xml:"thing"`
    Prop    int      `xml:"prop,attr"`
    Value   float64 // ???
}</code>
Nach dem Login kopieren

In diesem Fall , wird das XMLName-Feld verwendet, um anzugeben, dass die Struktur das XML-Element „thing“ darstellt. Es ist jedoch nicht immer notwendig, dieses Feld in die Strukturdefinition aufzunehmen.

Ohne XMLName-Eigenschaft:

<code class="go">type ThingElem struct {
    Prop  int   `xml:"prop,attr"`
    Value float64 // ???
}

type ThingWrapper struct {
    T ThingElem `xml:"thing"`
}</code>
Nach dem Login kopieren

Bei diesem Ansatz wird die ThingElem-Struktur innerhalb der Struktur nicht gemarshallt eine Wrapper-Struktur ThingWrapper. Das xml:"thing"-Tag in der Wrapper-Struktur gibt an, dass das ThingElem das XML-Element "thing" darstellen soll.

Bestimmen des Wertfeldtyps:

Beim Definieren des Im Wertfeld ist zu beachten, dass das XML-Element Zeichendaten (Textinhalt) enthält, die den Gleitkommawert darstellen. Um dies korrekt zu entmarshalieren, müssen die folgenden Änderungen vorgenommen werden:

Leerzeichen aus Wert entfernen:

Die XML-Daten enthalten Leerzeichen innerhalb der Gleitkommawerte. Diese Leerzeichen müssen vor dem Unmarshaling entfernt werden.

Verwenden Sie die Annotation „,chardata“:

Der Inhalt des XML-Tags kann mithilfe der Annotation „,chardata“ in referenziert werden die Strukturfelddefinition:

<code class="go">Value float64 `xml:",chardata"`</code>
Nach dem Login kopieren

Indem Sie diese Änderungen einbeziehen und sicherstellen, dass die XML-Daten keine Leerzeichen enthalten, können Sie das gegebene XML mit einem der oben genannten Designansätze erfolgreich in eine Go-Struktur entmarshalieren.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich XML-Elemente mit Attributen und Gleitkommawerten in Go-Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!