Unmarshalling von XML-Attributen mit unbekannten Attributen in Go
In Go ermöglicht uns das Paket „encoding/xml“ das Marshallen und Unmarshalieren von XML-Daten in und aus Go-Datenstrukturen. Allerdings unterstützt es standardmäßig nur das Unmarshalling von XML-Tags mit festen Attributen, die im Voraus bekannt sind.
Dynamische Attribute in XML
In einigen Fällen können XML-Dokumente Tags haben mit dynamischen Attributen, die nicht im Voraus bekannt sind. Dies kann beim Unmarshalling solcher XML-Daten in Go-Strukturen eine Herausforderung darstellen.
Unmarshaling dynamischer Attribute
Seit Ende 2017 unterstützt Go das Unmarshalling von XML-Tags mit dynamischen Attributen mithilfe von xml:",any,attr"-Tag-Direktive. Diese Anweisung weist den Unmarshaler an, alle Attribute im xml.Attr-Slice zu sammeln.
Beispiel:
package main import ( "encoding/xml" "fmt" ) func main() { var v struct { Attributes []xml.Attr `xml:",any,attr"` } data := `<TAG ATTR1="VALUE1" ATTR2="VALUE2" />` err := xml.Unmarshal([]byte(data), &v) if err != nil { panic(err) } fmt.Println(v) }
Wenn der obige Code ausgeführt wird, wird Folgendes ausgegeben:
{ Attributes: [ {Name:ATTR1 Value:VALUE1} {Name:ATTR2 Value:VALUE2} ] }
Hinweis:
Die Die Direktive xml:",any,attr" sammelt keine Attribute aus verschachtelten Tags. Wenn Sie Attribute aus verschachtelten Tags sammeln müssen, müssen Sie einen benutzerdefinierten XML-Decoder erstellen.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich XML-Attribute mit unbekannten Attributen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!