Ich muss mehrere große (200Mb-500Mb) XML-Dateien lesen, also möchte ich StaX verwenden. Mein System hat zwei Module - eines zum Lesen der Datei (mit StaX); ein anderes Modul ("Parser" -Modul) nimmt an, einen einzelnen Eintrag dieses XML zu erhalten und ihn unter Verwendung von DOM zu parsen. Meine XML-Dateien haben keine bestimmte Struktur - daher kann ich JaxB nicht verwenden. Wie kann ich dem Parser-Modul einen bestimmten Eintrag übergeben, den ich parsen möchte? Zum Beispiel:
%Vor%Ich möchte StaX verwenden, um diese Datei zu parsen - aber jeder 'Element' Eintrag wird an das 'Parser' Modul übergeben.
Bearbeiten:
Nach ein wenig mehr lesen - ich denke, ich brauche eine Bibliothek, die eine XML-Datei mit Stream liest - aber jeden Eintrag mit DOM analysieren. Gibt es so etwas?
Sie können einen StAX-Parser ( javax.xml.stream
) verwenden und jeden Abschnitt in einen DOM-Knoten ( javax.xml.transform
) transformieren ( org.w3c.dom
):
Siehe auch:
Sie können XMLDog von JLibs ausprobieren.
Er wertet Xpath auf XML-Dokument mit SAX aus (d. h. ohne das gesamte XML in den Speicher zu laden). und gibt Dom-Knoten für die Knoten zurück, wenn sie getroffen werden.
Sie können also xpath / Items / Item in Ihrem fetten XML-Dokument auswerten. Sie werden benachrichtigt, wenn jeder Objektknoten analysiert wird. Sie können den aktuellen Item Dom-Knoten bearbeiten und fortfahren.
Damit eignet es sich zur Auswertung von XPaths auf großen Dokumenten