2016-06-11 13 views
1

Ich habe eine große Bibel Daten, die in xml format ist. Ich mache eine Android-Bibel-Anwendung. Aber ich habe das Gefühl, dass meine Daten sehr groß sind.Big Data, Wie analysiert man eine riesige XML-Datei schneller?

In meiner Forschung habe ich gelesen, dass Xml Parser durch die gesamte Datei analysiert, bis es das Tag erhält, das es benötigt. Kennt jemand eine einfachere und schnellere Möglichkeit, alle Daten zu parsen.

+1

parse es in Brocken? dh. Wenn Sie einen Tag buchen müssen, überspringen Sie die anderen Tags und analysieren Sie von dort aus? – SQLiteNoob

+0

@SQLiteNoob danke für die schnelle Antwort. Kannst du mir bitte sagen, welche Methode benutzt werden soll? – Beraki

+1

Ich denke, die Schlüsselfrage ist: Was willst du mit den Daten machen? Das Parsen ist nur ein Mittel zum Zweck. –

Antwort

1

SAX-Parsing geeignet sein können, wenn die Datenextraktionslogik relativ einfach ist und nur vorwärts ... wenn Sie die Leichtigkeit und Komfort durchqueren die hierarchische Struktur oder XPath haben möchten, dann sind Sie kein Glück ...

JDOM oder DOM ernsthafte Speichernutzung Probleme haben ...

VTD-XML ist eine Bibliothek, die Anwendungsfälle zu kompliziert für SAX StAX umspannt und zu speicherintensiv für DOM oder JDOM.

Während VTD-XML lädt alles im Speicher, der Speicherbedarf ein bescheidener 1,3x ~ 1.5x die Größe des XML-Dokuments, das als DOM 3 ~ 5-fach effizienter ist ..

Es exportiert auch eine DOM wie Cursor-API und unterstützt XPath 1.0 ...

Can SAX Parsers use XPath in Java?

1

Sie sollten einen SAX-Parser verwenden. Dies ist die beste Methode zum Parsen großer XML-Dateien. Zum Beispiel können Sie dies tun:

  File inputFile = new File("input.txt"); 
     SAXParserFactory factory = SAXParserFactory.newInstance(); 
     SAXParser saxParser = factory.newSAXParser(); 
     UserHandler userhandler = new UserHandler(); 
     saxParser.parse(inputFile, userhandler);