2008-09-08 6 views
1

J'ai du code qui crée un DOM xml assez volumineux et l'écrit dans un fichier (jusqu'à 50-100 Mo). Il crée essentiellement le DOM puis appelle un toString dessus et l'écrit avec ofstream. Existe-t-il un moyen d'obtenir une sortie en streaming de la dom générée afin qu'elle ne crée pas toute la structure en mémoire en une seule fois, puis la copie, etc? Je ne modifierai aucun noeud après l'avoir créé afin qu'il puisse l'écrire et libérer de la mémoire immédiatement. Je pourrais écrire ma propre classe de xml qui fait la construction de xml mais ... je ne pense pas que c'est une bonne idée puisque je manquerai probablement quelque chose quand il s'agit d'échapper etccréer et diffuser un document XML volumineux en C++

Répondre

1

Je recommanderais GenX comme un écrivain en streaming XML, je l'utilise dans Programmer's Notepad et cela fonctionne un régal, vous pouvez voir des exemples d'utilisation dans le code source. Extrêmement rapide, il produit du bon XML UTF-8. L'utilisation de la mémoire pendant que vous l'utilisez devrait rester à peu près constante.

0

Regardez sous le mot-clé "C++ XML writer;" Les auteurs XML génèrent du XML vers un fichier sans créer le DOM entier en mémoire, ils n'ont donc pas besoin d'utiliser beaucoup de mémoire. Vous n'avez pas mentionné la plate-forme, mais Microsoft XmlLite a IXmlWriter.

0

Il n'y a vraiment pas grand chose à générer du XML valide; l'évasion dont vous vous inquiétez est insignifiante.

Voici une bibliothèque pour l'écriture en continu de XML ici: https://code.google.com/p/xml-writer-cpp/ - si rien d'autre, c'est utile à des fins éducatives.

Questions connexes