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%Wie mmyers angibt, könnten Sie Rekursion für dieses Problem verwenden.
%Vor%Ich sehe drei Möglichkeiten (zwei davon haben andere beantwortet):
Document
ist (dh wenn root
ein ist
Document
), können Sie verwenden
%Code%
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): Ссылка
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: