【问题标题】:Single file non-validating xml parser/reader单个文件非验证 xml 解析器/读取器
【发布时间】:2010-12-16 00:34:34
【问题描述】:

我正在寻找一个简单的 C 或 C++ 中的非验证 XML 解析器。

几年前,我发现了一个只是单个文件的解决方案,但我找不到 它不再。

我正在寻找一些非常小巧轻便的链接和建议的链接 非常适合嵌入式平台。

【问题讨论】:

  • 为什么要在嵌入式平台上使用 XML?

标签: c++ c xml


【解决方案1】:

Expat

您可以在有或没有验证的情况下以及在“流媒体模式”下工作。它非常轻巧。

【讨论】:

  • 我不确定内存占用,但代码大小是一个很好的 150k(在 x86 上),这不是我所说的轻量级......对于内存,大问题是它是否为每个字符串和每个 DOM 对象分配了大量的小块(这将导致大量开销并可能导致内存碎片),或者它是否将大量数据保存在更大的分配中。理想情况下,轻量级 XML 解析器会就地修改输入字符串,在需要的地方插入空终止符,并将其用于输出。
  • 谢谢,但它对我的需要来说太大了。
【解决方案2】:

pugixml 之类的呢?从他们的网站...

pugixml 是一个轻量级的 C++ XML 处理库。它的特点:

  • 具有丰富遍历/修改功能的类 DOM 界面
  • 构建 DOM 的极快的非验证 XML 解析器 来自 XML 文件/缓冲区的树
  • 用于复杂数据驱动树查询的 XPath 1.0 实现
  • 使用 Unicode 接口变体和完整的 Unicode 支持 自动编码转换

该库非常便携,并且 易于集成和使用。

pugixml 开发和维护 自 2006 年以来,拥有众多用户。全部 代码在 MIT 下分发 许可证,使其完全免费 在开源和 专有应用程序。

另外,这个answer 有更多信息。

还有tinyxmlRapidXml

【讨论】:

  • 我最后选择了 tinyxml。
【解决方案3】:

肯定有一个纯 C 的微型 xml 解析器可用。它在 SO 的较早答案中被引用,但我现在找不到它。如果我没记错的话,就是几百行代码。

更新:这是引用它的问题/答案:

Is there a good tiny XML parser for an embedded C project?

以及实际代码:

http://mercurial.intuxication.org/hg/cstuff/file/tip/tinyxml

【讨论】:

  • 谢谢,我实际上使用了另一个名为 tinyxml 的解析器,它与这个不同。
【解决方案4】:

RapidXML 是一个单头(如果您想要额外的功能,可以使用多个头)超轻量级、超快速的实现。它可以在“破坏性”模式下运行,这意味着通过在 XML 中设置指针并可能覆盖一些指针,避免所有额外的内存分配和数据复制。

tinyxml 不完全是单头文件,但与其他解析器相比,它仍然相当轻量级。我已经用了五年了,从来没有遇到过问题。作者最近开始使用“tinyxml-2”,据说它更好,甚至更轻量级,但我还没有机会真正尝试过。

【讨论】:

    【解决方案5】:

    http://mercurial.intuxication.org/hg/cstuff/file/tip/tinyxml

    这个解析器可以像嵌套的 XML 一样工作吗

    <CServiceType>
       <serno>61</serno>
       <caption1 />
       <caption2>Satelite</caption2>
       <caption3 />
    </CServiceType>
    

    【讨论】:

      猜你喜欢
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      相关资源
      最近更新 更多