Seite 1 von 1

SAX Parser für C++

Verfasst: 07.04.2016, 19:39
von joggel
Hallo ZFX'ler,

ich wollte mal Fragen ob ihr mir eine kleine, schlanke (bitte keine externen Abhängigkeiten) SAX-Lib für C++ empfehlen könnt?
Ich möchte nämlich große XML-Dateien parsen, und SAX scheint ja dazu die bessere Wahl zu sein.

Gruß

Re: SAX Parser für C++

Verfasst: 07.04.2016, 23:03
von Spiele Programmierer
Ich höre zum ersten mal, dass SAX am Schnellsten sein soll.

Wenn es um Performance bei der XML Verarbeitung geht, empfehle ich nämlich PugiXml und das ist DOM basiert. Die Bibliothek ist ziemlich schnell (Benchmark) und sehr einfach zu verwenden bzw. einzubinden. Ich habe damit schon problemlos hunderte MB große XML Dateien eingelesen.

Re: SAX Parser für C++

Verfasst: 07.04.2016, 23:06
von joggel
Die Dateien die ich parsen möchte sind mehrere GB groß.
Mit DOM werden die ja komplette in den Arbeitsspeicher abgebildet...
Mit SAX holt man sich immer nur einzelne Teile aus der Datei.
Darum geht es mir..

Re: SAX Parser für C++

Verfasst: 07.04.2016, 23:18
von Spiele Programmierer
Aha ok. Das ist doch noch ein Stück größer als ich dachte. ;)
Auf einem 64 Bit System sollte es aber eigentlich aber erstmal kein Problem darstellen.
Vielleicht solltest du es einfach mal auf einen Versuch ankommen lassen.

Re: SAX Parser für C++

Verfasst: 07.04.2016, 23:56
von joggel
Stimmt eigentlich. Mit 64bit hat man genug platz.
Na ich wollte auf nummer sicher gehen und dachte das hier jemand schon mal so eine Lib benutzt hat.

Re: SAX Parser für C++

Verfasst: 08.04.2016, 00:44
von Schrompf
Ich benutze TinyXML, aber mehr aus historischen Gründen. Das ist ein DOM-Parser. Für Sax müsste http://rapidxml.sourceforge.net/ funktionieren.

Re: SAX Parser für C++

Verfasst: 08.04.2016, 09:46
von joggel
Also bei RapidXML steht nix auf der Webseite von SAX sondern nur das es der schnellste DOM-Parser ist...
Aber ich habe Xerces gefunden, welche sowohl per DOM als auch per SAX parst.
Ich stieß nämlich mal auf diese Lib: Libxml++, und da fand ich das schön benutzerfreundlich...
Aber diese Bibliothek hat wieder irgendwelche Abhängigkeiten zu anderen LIbs die man auch wieder bauen muss und Tod und Teufel und so :?

Naja, aber vlt brauche ich gar keinen SAX-Parser, und die großen Dateien kann ich trotzdem parsen...benutze auch TinyXML.

Trotzdem danke für die Antworten...

Re: SAX Parser für C++

Verfasst: 08.04.2016, 18:41
von NytroX
Auch auf die Gefahr hin, dass es schon zu spät ist:

Was hälst du von einem StaX parser? Das ist quasi ein Zwischending, ein Parser der nur die Elemente parsed, die man braucht.
D.h. man braucht nicht das ganze File/DOM im Memory, aber man muss sich auch nicht mit den Callbacks von SAX rumschlagen.

http://www.codeproject.com/Articles/587 ... -Cplusplus

Re: SAX Parser für C++

Verfasst: 08.04.2016, 19:16
von joggel
NytroX hat geschrieben:Auch auf die Gefahr hin, dass es schon zu spät ist: [...]
Ach quatsch!! Immer her damit^^

Klingt auf jeden Fall interessant.
Ich werde es mir mal anschauen.
Danke :)

Re: SAX Parser für C++

Verfasst: 05.02.2018, 05:01
von skreutzer
Ich habe einen sehr primitiven StAX-Parser in C++ gestartet, der zwar (noch?) ganz viel nicht kann oder noch nicht richtig, andererseits aber auch ohne Abhängigkeiten auskommt und vielleicht ausreichend ist.

Re: SAX Parser für C++

Verfasst: 05.02.2018, 06:09
von joggel
Guten Morgen,

das Projekt, für den ich den Parser gesucht hatte, habe ich sein gelassen bzw abgebrochen.
Es ging um das parsen von OSM-Dateien, die mehrere GB groß sein können. Letzten Endes hatte ich Xercses benutzt.
Schönes Projekt aber trotzdem.
Kann man vlt im Subforum/Thread "Nützliche OpenSource Projekte" verlinken :)
Also, ich meine dein Stax-Parse.