Sehr lange xml

8

Ich habe eine riesige XML-Datei (40 GB). Ich möchte einige Felder daraus extrahieren, ohne die gesamte Datei in den Speicher zu laden. Irgendwelche Vorschläge?

    
Harshal Pandya 01.11.2012, 19:33
quelle

3 Antworten

19

Ein kurzes Beispiel mit XMLEventReader basierend auf einem Tutorial für SAXParser hier (wie von Rinat Tainov geschrieben).

Ich bin mir sicher, dass es besser gemacht werden kann, aber nur um die grundlegende Verwendung zu zeigen:

%Vor%     
Arjan 02.11.2012, 10:46
quelle
1

Benutzer SAXParser , es wird nicht geladen gesamtes xml zum Gedächtnis. Hier kann ein gutes Java-Beispiel leicht verwendet werden in Scala.

    
Rinat Tainov 02.11.2012 04:38
quelle
1

Wenn Sie sich über alternative XML-Bibliotheken freuen, bietet Scales Xml drei Haupt-Pull-Parsing Ansätze:

  1. Iterator basiert - benutzen Sie einfach hasNext, neben weitere Artikel
  2. iterate function - liefert einen Iterator, aber für Bäume, die durch einen einfachen Pfad identifiziert werden
  3. Iteratee basiert - Ermöglicht Kombinationen mehrerer Pfade

Der Schwerpunkt der bevorstehenden Version 0.5 ist das asynchrone Parsing über aalto-xml, was zusätzliche nicht blockierende Steueroptionen ermöglicht.

In allen Fällen können Sie sowohl die Speichernutzung als auch die Verarbeitung des Dokuments mit Scales steuern.

    
Chris 04.11.2012 23:01
quelle

Tags und Links