Heim >Backend-Entwicklung >Golang >Wie kann ich XML mit dynamischen Attributen in Go entmarshalieren?

Wie kann ich XML mit dynamischen Attributen in Go entmarshalieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-20 11:44:04280Durchsuche

How Can I Unmarshal XML with Dynamic Attributes in Go?

Unmarshaling von XML mit dynamischen Attributen in Go

In Go kann das Unmarshaling von XML mit dynamischen Attributen eine Herausforderung sein. Mit der jüngsten Lösung von Problem 3633 gibt es jedoch nun eine einfache und effiziente Möglichkeit, mit dieser Situation umzugehen.

Das Problem: Unbekannte Attribute

Traditionell würden Sie beim Unmarshaling von XML in Go dies tun Definieren Sie eine Struktur mit bestimmten Feldern, die den erwarteten XML-Elementen entsprechen. Was passiert jedoch, wenn Sie auf XML-Tags mit Attributen stoßen, die Sie nicht vorhersagen können?

Die Lösung: Das „,any,attr“-Tag

Die Lösung liegt in der Verwendung des „,any,attr“. "-Tag in Ihrer Go-Strukturdefinition. Dieses Tag weist den XML-Unmarshaler an, alle Attribute des angegebenen Elements in einem Slice von xml.Attr-Strukturen zu sammeln.

Beispiel

Betrachten Sie das folgende XML-Snippet:

<TAG ATTR1="VALUE1" ATTR2="VALUE2" />

Um dieses XML in eine Go-Struktur zu entpacken, können Sie den folgenden Code verwenden:

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 Sie diesen Code ausführen, wird die V-Struktur mit den folgenden Daten gefüllt:

{[]xml.Attr{
    {Name: {Local: "ATTR1"}, Value: "VALUE1"},
    {Name: {Local: "ATTR2"}, Value: "VALUE2"},
}}

Das Attributes-Slice enthält zwei xml.Attr-Strukturen, die jeweils eines der Attribute aus dem XML-Tag darstellen.

Fazit

Das Tag „,any,attr“ bietet eine leistungsstarke und flexible Möglichkeit um XML-Tags mit dynamischen Attributen in Go zu entmarshalieren. Durch die Nutzung dieser Funktion können Sie problemlos mit unvorhersehbaren XML-Strukturen umgehen und die benötigten Daten in benutzerdefinierte Strukturen extrahieren.

Das obige ist der detaillierte Inhalt vonWie kann ich XML mit dynamischen Attributen in Go entmarshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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