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!