Welcher XML Parser für große Dateien (bis 1GB)
-
Hallo,
ich muss ein Programm schreiben, dass bis zu 1GB große Dateien (binär gespeichert) in XML überführen soll. Gefunden habe ich bisher TinyXML, das ja DOM benutzt, was aber laut Wikipedia nicht gerade schnell sein soll.
Da ich extra ANSI C++ nehmen möchte und nicht C# mit .NET, da ich mir hier eine höhere Performance erhoffe, kommt TinyXML also nicht in Frage.
Was würdet ihr mir empfehlen? Es sollte eben performant sein, da ich sonst direkt mit C# arbeiten kann und mir dadurch die Arbeit wesentlich vereinfachen kann.
Gruß
Shinzo
-
Nimm C#. Wahrscheinlich bremst dich eh Speicherzugriff aus, sodass der Geschwindigkeitsunterschied nicht so groß sein wird.
-
Hallo,
Ich halte schon die Idee für Unsinn. Wenn schon die Binärdateien über 1GB groß sind, was soll das erst mit XML-Dateien sein. Die werden ja noch viel größer.
Wozu soll das bitte gut sein. XML ist nicht immer und überall gut.
-
Wie häufig ist das konvertieren der Daten von Binär -> XML? Wie komplex ist die struktur? Wie sattelfest bist du in c++? Dann kannst du dir deinen XML-Code selber generieren ohne weiteres Framework.
-
Die Richtung ist also Binär -> XML?
Dann brauchst du strenggenommen doch überhaupt keinen XML Parser, sondern musst nur Text rausschreiben.Falls doch, siehe meine Seite mit einer Liste von freien XML Parsern in C oder C++: http://lars.ruoff.free.fr/xmlcpp/
Die ist unterteilt in grosse, mächtige und kleine, schnelle.
-
Du benötigst einen ereignisorientierten Parser, wie beispielsweise expat.
So ein großes Dokument in den Speicher zu laden und dann zu parsen ist kontraproduktiv.
-
Er will ja kein XML parsen. Er will XML aus Binärdaten erzeugen.
Wie sieht denn das Endprodukt aus? (nur die Struktur, nicht das du jetzt 1 GB Text rein postest)
Weil notfalls kann man auch einfach hart codiert in C++ den XML erzeugen, wenn die Datenstruktur statisch ist. Kommt aber halt darauf an.