Heim >Backend-Entwicklung >Golang >Wie kann ich XML für eine optimierte Datenverarbeitung direkt in eine Go-Map einbinden?

Wie kann ich XML für eine optimierte Datenverarbeitung direkt in eine Go-Map einbinden?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-05 16:21:111076Durchsuche

How Can I Directly Unmarshal XML into a Go Map for Optimized Data Processing?

XML direkt in eine Karte entmarshallen

Das direkte Entmarshallen von XML in eine Karte kann die Datenverarbeitung optimieren, indem der Zwischenschritt der Strukturkonvertierung entfällt.

Implementierung:

Um dies zu erreichen, erstellen Sie ein Typ, der die xml.Unmarshaller-Schnittstelle implementiert und die direkte Zuordnung von XML-Daten in einen Map[string]string ermöglicht.

type classAccessesMap struct {
    m map[string]string
}

// UnmarshalXML implements the xml.Unmarshaller interface
func (c *classAccessesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    c.m = make(map[string]string)

    var key, val string

    for {
        t, _ := d.Token()
        switch tt := t.(type) {

            // TODO: parse the inner structure

        case xml.StartElement:
            fmt.Println(">", tt)

        case xml.EndElement:
            fmt.Println("<", tt)
            if tt.Name == start.Name {
                return nil
            }

            if tt.Name.Local == "enabled" {
                c.m[key] = val
            }
        }
    }
}

Verwendung:

Wenden Sie den Benutzerdefiniert an Geben Sie den Unmarshal-Vorgang ein, um die XML-Daten direkt in eine Karte abzubilden:

// Unmarshalling into a map
var cm classAccessesMap
err := xml.Unmarshal([]byte(`<classAccesses>\n    <apexClass>AccountRelationUtility</apexClass>\n    <enabled>true</enabled>\n</classAccesses>`), &cm)
if err != nil {
    fmt.Println(err)
}

Dieser Ansatz rationalisiert die Datenverarbeitung durch Vermeidung Der Aufwand doppelter Konvertierungen, was zu einer verbesserten Leistung bei großen Datenmengen führt.

Das obige ist der detaillierte Inhalt vonWie kann ich XML für eine optimierte Datenverarbeitung direkt in eine Go-Map einbinden?. 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