Heim >Backend-Entwicklung >Golang >Wie entmarshaliere ich XML-Elemente mit Attributen und Gleitkommawerten in Go?
Unmarshalling von XML-Elementen mit Attributen und Gleitkommawerten in Go
So entmarshallen Sie ein XML-Element wie das bereitgestellte mit einem Attribut und Als Gleitkommawert müssen wir eine Go-Struktur definieren, die der XML-Struktur entspricht.
Struktur definieren
Betrachten wir die beiden in der angegebenen Strukturdefinitionen Frage:
Erste Definition:
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
Zweite Definition:
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` // Do I even need this? Prop int `xml:"prop,attr"` Value float // ??? }</code>
Adressierung der Optionen :
Endgültige Lösung:
<code class="go">type Thing struct { Prop int `xml:"prop,attr"` Value float64 `xml:",chardata"` } type Root struct { Things []Thing `xml:"thing"` }</code>
In dieser Lösung stellt die Thing-Struktur dar ein einzelnes XML-Element, und die Root-Struktur ist ein Container, der einen Teil der Thing-Strukturen zum Unmarshaling des XML-Root-Elements enthält.
Beispielcode:
<code class="go">package main import ( "encoding/xml" "fmt" ) const xmlData = ` <root> <thing prop="1">1.23</thing> <thing prop="2">4.56</thing> </root> ` func main() { root := &Root{} if err := xml.Unmarshal([]byte(xmlData), root); err != nil { fmt.Println(err) return } fmt.Println(root.Things) }</code>
Dieser Code zeigt, wie das XML-Element in eine Go-Struktur entmarshaliert wird, einschließlich der Entfernung von Leerzeichen aus den Gleitkommawerten.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich XML-Elemente mit Attributen und Gleitkommawerten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!