Unmarshaling von XML-Elementen mit Attributen und Gleitkommawerten
Um ein XML-Element mit einem Attribut und einem Gleitkommawert zu entmarshalieren, können Sie definieren eine Go-Struktur mit den entsprechenden Feldern. Es gibt jedoch einige Überlegungen zur Verwendung der xml.Name-Eigenschaft.
Im bereitgestellten XML-Element:
<code class="xml"><thing prop="1"> 1.23 </thing></code>
Die ThingElem-Struktur sollte die folgenden Eigenschaften haben:
Option 1: Mit XMLName
In dieser Option können Sie der ThingElem-Struktur ein xml.Name-Feld hinzufügen. Dieses Feld wird normalerweise verwendet, wenn die XML-Struktur nicht eindeutig ist. In diesem Fall ist dies nicht erforderlich, da klar ist, dass die Struktur dem Thing-Element entspricht.
<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: Ohne XMLName
Da es keine Mehrdeutigkeit gibt In der XML-Struktur können Sie das Feld xml.Name weglassen.
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float // ??? }</code>
Gleitkommawerte entmarshalieren
Um den Gleitkommawert korrekt zu entmarshalieren, müssen Sie dies tun Stellen Sie sicher, dass das XML keine Leerzeichen enthält. In Ihrem Beispiel ist der Wert 1,23, es wird jedoch empfohlen, die Leerzeichen zu entfernen und ihn als 1,23 zu speichern.
Verschachtelte Daten entmarshalieren
Sie können verschachtelte Daten auch entmarshalieren Definieren einer Wrapper-Struktur. Beispielsweise enthält das XML mehrere Thing-Elemente. Um sie zu entmarshalieren, würden Sie eine ThingWrapper-Struktur definieren:
<code class="go">type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
Vollständiges Codebeispiel
Hier ist ein vollständiges Codebeispiel, das die bereitgestellten XML-Daten entmarshallt:
<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>
Dieser Code gibt die analysierten XML-Daten aus, einschließlich des Prop-Attributs und der Gleitkommawerte.
Das obige ist der detaillierte Inhalt vonMuss ich XMLName zum Unmarshaling von XML-Elementen mit Attributen und Gleitkommawerten verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!