用C ++创建和流式传输大型XML文档

时间:2008-09-08 18:05:14

标签: c++ xml

我有一些代码可以创建一个相当大的xml DOM并将其写入文件(最多50-100MB)。它基本上创建了DOM,然后在其上调用toString并使用ofstream将其写出来。有没有办法获得生成的dom的流输出,以便它不会立即在内存中创建整个结构然后复制它等?我创建它之后不会修改任何节点,因此它可以将其写出来并立即释放内存。我可以编写自己的xml类来进行xml构建,但是......我认为这不是一个好主意,因为我可能会错过任何关于逃避等的东西。

4 个答案:

答案 0 :(得分:3)

好的,结果是libxml2有一个流API:

http://xmlsoft.org/examples/testWriter.c

这是一种旧式(非常C-ish),但你可以在它周围写下你的包装。

答案 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/ - 如果不出意外,它对教育目的很有用。