2008-09-08 5 views
1

Ich habe etwas Code, der ein ziemlich großes XML-DOM erstellt und schreibt es in eine Datei (bis zu 50-100 MB). Es erstellt im Grunde das DOM und ruft dann einen toString auf und schreibt es mit ofstream aus. Gibt es eine Möglichkeit, eine Streaming-Ausgabe des erzeugten Doms zu erhalten, so dass es nicht die gesamte Struktur im Speicher auf einmal erzeugt und dann kopiert, usw.? Ich werde keinen Knoten ändern, nachdem ich ihn erstellt habe, damit er es schreiben kann und den Speicher sofort freigibt. Ich könnte meine eigene XML-Klasse schreiben, die die XML-Konstruktion tut, aber ... ich denke nicht, dass das eine gute Idee ist, da ich wahrscheinlich etwas vermissen werde, wenn es darum geht, zu entkommen etc.erstellen und streamen große XML-Dokument in C++

Antwort

1

Ich würde GenX empfehlen Streaming-XML-Writer, verwende ich dies in Programmer's Notepad und es funktioniert ein Vergnügen, können Sie Beispiele für die Verwendung im Quellcode sehen. Extrem schnell und erzeugt gutes UTF-8 XML. Die Speicherbelegung während der Verwendung sollte ungefähr konstant bleiben.

0

Schauen Sie unter Stichwort "C++ XML Writer;" XML-Writer generieren XML-Dateien, ohne das gesamte DOM im Speicher zu erstellen, sodass sie nicht viel Speicher benötigen. Sie haben Plattform nicht erwähnt, aber Microsoft XmlLite hat IXmlWriter.

0

Es gibt wirklich nicht viel zu generieren gültiges XML; Die Flucht, um die Sie sich sorgen, ist trivial.

Es gibt eine Bibliothek zum Streamen von XML hier schreiben: https://code.google.com/p/xml-writer-cpp/ - wenn nichts anderes, es ist nützlich für Bildungszwecke.