我有一些代码可以创建一个相当大的xml DOM并将其写入文件(最多50-100MB)。它基本上创建了DOM,然后在其上调用toString并使用ofstream将其写出来。有没有办法获得生成的dom的流输出,以便它不会立即在内存中创建整个结构然后复制它等?我创建它之后不会修改任何节点,因此它可以将其写出来并立即释放内存。我可以编写自己的xml类来进行xml构建,但是......我认为这不是一个好主意,因为我可能会错过任何关于逃避等的东西。
答案 0 :(得分:3)
答案 1 :(得分:1)
我建议GenX作为流式XML编写器,我在Programmer's Notepad中使用它并且它有用,您可以在源代码中看到使用示例。非常快,它可以生成良好的UTF-8 XML。使用它时的内存使用量应保持大致不变。
答案 2 :(得分:0)
在关键字“C ++ XML writer”下查找XML编写器生成XML到文件而不在内存中构建整个DOM,因此它们根本不需要使用很多内存。你没有提到平台,但是Microsoft XmlLite有IXmlWriter。
答案 3 :(得分:0)
生成有效的XML真的不多;你担心的逃避是微不足道的。
这里有一个用于流式写入XML的库:https://code.google.com/p/xml-writer-cpp/ - 如果不出意外,它对教育目的很有用。