Heim >Backend-Entwicklung >Golang >Wie kann ich XML-Strukturen in Golang effizient crawlen und verarbeiten?
In der Welt des XML-Parsings bietet die xml.Unmarshal-Methode einen strukturierten Ansatz zum Konvertieren von XML-Daten in Go-Strukturen. Allerdings stellen die Einschränkungen eine Herausforderung dar, wenn Sie dynamisch durch das gesamte Dokument navigieren möchten.
Stellen Sie sich eine XML-Struktur wie diese vor:
<content> <p>this is content area</p> <animal> <p>This id dog</p> <dog> <p>tommy</p> </dog> </animal> <birds> <p>this is birds</p> <p>this is birds</p> </birds> <animal> <p>this is animals</p> </animal> </content>
Um diese Struktur sequenziell zu navigieren, benötigen Sie eine Methode dazu :
Vanilla-Lösung mit Rekursion
Um dies zu erreichen, können Sie die Leistungsfähigkeit von Vanilla Encoding/XML mit einer rekursiven Struktur und einer einfachen Walk-Funktion nutzen:
type Node struct { XMLName xml.Name Content []byte `xml:",innerxml"` Nodes []Node `xml:",any"` } func walk(nodes []Node, f func(Node) bool) { for _, n := range nodes { if f(n) { walk(n.Nodes, f) } } }
Dieser Ansatz ermöglicht es Ihnen, das gesamte Dokument zu durchlaufen und jeden Knoten als zu behandeln benötigt.
Erweiterte Lösung mit Attributen
Wenn Sie Zugriff auf Attribute benötigen, finden Sie hier eine aktualisierte Version:
type Node struct { XMLName xml.Name Attrs []xml.Attr `xml:",any,attr"` Content []byte `xml:",innerxml"` Nodes []Node `xml:",any"` } func (n *Node) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { n.Attrs = start.Attr type node Node return d.DecodeElement((*node)(n), &start) }
Vorteile von Dieser Ansatz:
Das obige ist der detaillierte Inhalt vonWie kann ich XML-Strukturen in Golang effizient crawlen und verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!