Lesen einer großen XML-Datei mit stax und dom

9

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?

    
Noam 21.02.2012, 15:07
quelle

2 Antworten

15

Sie können einen StAX-Parser ( javax.xml.stream ) verwenden und jeden Abschnitt in einen DOM-Knoten ( javax.xml.transform ) transformieren ( org.w3c.dom ):

%Vor%

Siehe auch:

Blaise Doughan 21.02.2012, 17:27
quelle
0

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

    
Santhosh Kumar Tekuri 21.02.2012 16:12
quelle

Tags und Links