【问题标题】:create and stream large XML document in C++在 C++ 中创建和流式传输大型 XML 文档
【发布时间】:2010-09-08 04:43:14
【问题描述】:

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

【问题讨论】:

    标签: c++ xml


    【解决方案1】:

    我会推荐 GenX 作为流式 XML 编写器,我在 Programmer's Notepad 中使用它,它很有效,您可以在源代码中查看使用示例。速度极快,并且可以生成良好的 UTF-8 XML。使用时的内存使用量应大致保持不变。

    【讨论】:

      【解决方案2】:

      好的,原来 libxml2 有一个流式 API:

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

      这是一种有点旧的风格(非常 C-ish),但你可以围绕它编写你的包装器。

      【讨论】:

        【解决方案3】:

        查看关键字“C++ XML writer;” XML 编写器生成 XML 到文件,而无需在内存中构建整个 DOM,因此他们根本不需要使用太多内存。您没有提到平台,但 Microsoft XmlLite 有 IXmlWriter。

        【讨论】:

          【解决方案4】:

          生成有效的 XML 确实没有什么用处;你担心的逃跑是微不足道的。

          这里有一个用于流式写入 XML 的库:https://code.google.com/p/xml-writer-cpp/ — 如果没有别的,它对教育目的很有用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-11-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-02
            • 1970-01-01
            • 2013-05-27
            • 1970-01-01
            相关资源
            最近更新 更多