2010-12-16 96 views
2

我在C或C++中寻找一个简单的非验证XML解析器。单个文件无法验证的XML解析器/阅读器

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

我在一些链接和建议的非常小和轻量级的 非常适合嵌入式平台。

+0

为什么要在嵌入式平台上使用XML? – 2012-07-18 15:38:16

回答

1

怎么样像pugixml。从他们的网站...

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

  • 具有丰富的穿越/修改功能类似DOM接口
  • 极快非验证XML从XML文件构建DOM 树分析器/缓冲
  • 的XPath 1.0实现对复杂数据驱动的树查询
  • 使用Unicode接口变种
  • 完整的Unicode支持和 自动编码转换

该库极其便携,易于集成和使用。

pugixml自2006年开发并维护 并有许多用户。所有 代码都是根据MIT 许可证分发的,使得它在 中可以完全免费使用在开源和 专有应用程序中。

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

还有tinyxmlRapidXml

+0

我最后用tinyxml去了。 – Matt 2011-01-03 00:01:27

2

Expat

您可以用或不用验证和“流模式”工作。它非常轻巧。

+0

我不确定内存占用情况,但代码大小是一个很好的150k(在x86上),这不是我称之为轻量级的内存......对于内存来说,最大的问题是它是否分配吨每个字符串和每个DOM对象的小块(这会导致大量开销和可能的内存碎片),或者它是否将大量数据保留在较大的分配中。理想情况下,轻量级的XML解析器会就地修改输入字符串,在需要的位置插入空终止符,并将其用于输出。 – 2010-12-16 03:31:07

+0

谢谢,但对我的需求来说太大了。 – Matt 2010-12-16 07:35:29

1

绝对有一个纯粹的C,微小的XML解析器可用。它在SO的早期答案中被引用,但我现在找不到它。如果我没有记错,那只是几百行代码。

更新:这里的提问/回答引用它:

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

和实际代码:

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

+0

谢谢,我实际上去了另一个叫做tinyxml的解析器,它与这个不同。 – Matt 2011-01-03 00:01:54

0

RapidXML是一个单头(如果你想要额外的功能,多头)超轻量,超快速的实现。它可以在“破坏性”模式下运行,即通过将指针设置到XML中并可能覆盖一些指针,避免所有额外的内存分配和数据副本。

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