Wie durchqueren Sie XML-Daten in Golang?

8

Ich habe die xml.UnMarshal-Methode verwendet, um ein struct-Objekt zu erhalten, aber es hat seine eigenen Einschränkungen. Ich brauche einen Weg, wo ich alle Nachkommen eines bestimmten Typs in einem Knoten bekommen kann, ohne den exakten xpath anzugeben.

Zum Beispiel habe ich eine XML-Daten des folgenden Formats:

%Vor%

Nun möchte ich das obige xml durchlaufen und jeden Knoten und seine untergeordneten Elemente in dieser Reihenfolge bearbeiten. Das Problem ist, dass diese Struktur nicht festgelegt ist und sich die Reihenfolge der Elemente ändern kann. Also brauche ich einen Weg, damit ich wie

durchqueren kann %Vor%     
Prashant 15.05.2015, 10:06
quelle

4 Antworten

13

Sie können es mit einer vanilla encoding/xml machen, indem Sie eine rekursive Struktur und eine einfache Walk-Funktion verwenden:

%Vor%

Beispiel für einen Spielplatz: Ссылка .

BEARBEITEN: Hier ist eine Version mit attrs:

%Vor%

Spielplatz: Ссылка .

    
Ainar-G 15.05.2015 10:52
quelle
0

Da Sie nach einer Bibliothek fragen und es so aussieht, als würden Sie gerne den XML-Baum durchqueren, kann ich XMLDom-Go

    
Umberto Raimondi 15.05.2015 10:23
quelle
0

Ich habe ein bisschen gesucht, wie ich mit dem generischen XML-DOM umgehen kann, und am nächsten kommt man mit decoder.Token() oder decoder.RawToken() .

Wenn Sie jedoch bereit sind, eine Bibliothek in Betracht zu ziehen, fand ich diese hier sehr leicht: Ссылка

%Vor%

Es verwendet den integrierten XML-Parser in der oben beschriebenen Weise.

    
Kugel 21.11.2016 02:37
quelle
0

xmlquery unterstützt die Analyse eines XML-Dokuments als DOM-Baum, um alle Knoten zu durchlaufen, wie Go's HTML-Paket.

    
zhengchun 14.11.2017 06:34
quelle

Tags und Links