Heim > Backend-Entwicklung > Golang > Wie entmarshaliere ich XML-Attribute mit unbekannten Attributen in Go?

Wie entmarshaliere ich XML-Attribute mit unbekannten Attributen in Go?

DDD
Freigeben: 2024-11-25 02:30:10
Original
190 Leute haben es durchsucht

How to Unmarshal XML Attributes with Unknown Attributes in Go?

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)
}
Nach dem Login kopieren

Wenn der obige Code ausgeführt wird, wird Folgendes ausgegeben:

{
  Attributes: [
    {Name:ATTR1 Value:VALUE1}
    {Name:ATTR2 Value:VALUE2}
  ]
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage