在不使用 DOM 的情况下可移植地生成 XML 文档

Posted

技术标签:

【中文标题】在不使用 DOM 的情况下可移植地生成 XML 文档【英文标题】:Portably generate XML document without using a DOM 【发布时间】:2011-03-10 16:10:09 【问题描述】:

我需要从 C++ 生成 XML 文档。出于性能原因,我不想使用 Xerces 或 TinyXML 等 XML 解析器并生成一个 DOM,然后我将其序列化,理想情况下我想要一种“反向 SAX”接口。我还需要代码真正可移植,跨 Windows、UNIX、MacOSX 等。

到目前为止我发现的唯一参考是genx。有人有其他建议吗?

编辑: 这个问题what's the easiest way to generate xml in c++? 实际上似乎回答了我的问题,或者至少提供了一些指向其他 XML 生成库的链接。

【问题讨论】:

【参考方案1】:

Rapidxml 非常快速且非常轻量级。

【讨论】:

我会看看那个,因为它确实声称是轻量级的,所以也许构造 DOM 然后序列化它可能不会有太多的内存开销,但理想情况下我想要一个流界面。 我确实明确说过“不使用 DOM”。【参考方案2】:

看起来 libxml2 有一个流式 API。请参阅问题create and stream large XML document in C++的答案

【讨论】:

以上是关于在不使用 DOM 的情况下可移植地生成 XML 文档的主要内容,如果未能解决你的问题,请参考以下文章

在不修改 C# XSD 类的情况下向 XML 序列化添加前缀和命名空间

在不破坏严格别名的情况下有效地生成字节缓冲区

XML 解析---dom解析和sax解析

在不更改架构的情况下保持 XML DRY

为啥在这种情况下可空类型不相等?

如何在不附加到 DOM 的情况下正确删除 html5 音频?