Iteriere alle XML-Knotengenerationen in Java DOM

7

Ich möchte prüfen, ob ein XML-Dokument irgendwo ein "person" -Element enthält. Ich kann alle Elemente der ersten Generation sehr einfach überprüfen:

%Vor%

Und ich kann mehr Schleifen hinzufügen, um in Unterelemente zu gehen, aber ich müsste wissen, wie viele verschachtelte Schleifen eingefügt werden müssen, um zu bestimmen, wie weit in das zu bohrende Dokument. Ich könnte 10 Schleifen verschachteln und am Ende ein Element mit 12 Elementen in einem Dokument verschachteln. Ich muss in der Lage sein, das Element herauszuziehen, egal wie tief es verschachtelt ist.

Gibt es Möglichkeiten, Elemente aus einem ganzen Dokument zu sammeln? Wie geben Sie die Textwerte aller Tags als Array zurück oder iterieren Sie darüber?

Etwas ähnlich wie pythons elementtree 'findall' Methode vielleicht:

%Vor%     
directedition 23.06.2009, 17:45
quelle

5 Antworten

10

Wie mmyers angibt, könnten Sie Rekursion für dieses Problem verwenden.

%Vor%     
user125661 23.06.2009, 17:51
quelle
10

Ich sehe drei Möglichkeiten (zwei davon haben andere beantwortet):

  1. Rekursion verwenden.
  2. Verwenden Sie XPath (möglicherweise etwas übertrieben) für dieses Problem, aber wenn Sie eine haben Viele Anfragen wie diese ist es definitiv etwas zu entdecken). Verwenden Sie kdgregorys Hilfe dazu; ein Ein kurzer Blick auf die API zeigte das an Es ist ein bisschen schmerzhaft zu benutzen direkt.
  3. Wenn das, was Sie haben, tatsächlich ein Document ist (dh wenn root ein ist Document ), können Sie verwenden %Code%
Kathy Van Stone 23.06.2009 18:13
quelle
4

Dafür steht XPath. Um alle Elemente mit dem Namen "person" zu erhalten, hier der Ausdruck:

%Vor%

Es kann schmerzhaft sein, die XPath-APIs des JDK direkt zu verwenden. Ich bevorzuge die Wrapper, die ich in der Practical XML-Bibliothek geschrieben habe: Ссылка

Und hier ist ein Tutorial, das ich geschrieben habe (auf JDK XPath im Allgemeinen, aber erwähnt XPathWrapper): Ссылка

    
kdgregory 23.06.2009 17:57
quelle
2

Hier ist die formatierte Version:

%Vor%     
parser 10.05.2012 18:07
quelle
0

Abgesehen von Document.getElementsByTagName() oder XPath können Sie auch jOOX verwenden, eine von mir erstellte Bibliothek für einfacheren XML-Zugriff und -Manipulation. jOOX umschließt Standard-Java-APIs und fügt jquery ähnliche Hilfsmethoden hinzu. Ihr Python-Code-Snippet würde dann in diesen Java-Code übersetzt:

%Vor%     
Lukas Eder 22.01.2012 11:13
quelle

Tags und Links