Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entmarshaliere ich XML-Elemente mit Attributen und Gleitkommawerten in Go-Strukturen?

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

Susan Sarandon
Susan SarandonOriginal
2024-10-24 02:40:29869Durchsuche

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>

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>

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>

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>

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!

Stellungnahme:
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