嵌入式C项目是否有一个很好的小型XML解析器?

我正在为一个嵌入式项目提供一个非常小的XML解析器。 它需要编译为10-15k,不需要validation,并且需要简单和便携。

我能够为C调整以下XML解析器库的编译标志,并在我的Ubuntu机器上减少了超过50%的大小。 Mini-XML是唯一接近您要求的内容:

  • 迷你XML (36K)
  • 外籍人士 (124K)
  • RXP (184K)

这里有一个很好的讨论:

嵌入式系统的C XML库

我最近在搜索一个,我找到了SimpleXML( http://simplexml.sourceforge.net/ )和稍大的sxmlc( http://sourceforge.net/projects/sxmlc/

我发现SimpleXML更有趣,因为它更简单,我没有尝试它但看起来它符合我的想法,单个文件(井.h和.c)库不支持异国情调的XMLfunction。

简单的XML解析器是XML子集的微小解析器(除了实体和命名空间之外的所有东西)。 它使用简单的“每个标签一个处理程序”接口,适用于资源有限的设备。

您始终可以自己实施。 几年前我这样做了,刚才在mercurial.intuxication.org/hg/cstuff的代码中添加了一些接口文档。

请注意,解析器从未在生产环境中使用过,甚至未经过初步测试; 注释也不存在,所以如果你需要修改代码,请尽情享受代码;)

尝试yxml – 它是非常小且快速的非validation解析器。

我开发了sxmlc (“简单XML在C中”)就是这样:尽可能少的文件。 它只是一个文件,如果您需要通过文档进行类似XPath的搜索,可以添加一个可选的“搜索”文件。

它处理DOM样式加载(内存中的整个文档树)或SAX样式加载(每当使用其属性读取节点或在节点上读取文本时调用回调)。 如果记忆是一个问题,你会对SAX感兴趣。

有些人也对它可以解析文件或内存缓冲区这一事实感兴趣(当您将XML作为Web回复时很有用)。

它从版本4到#define处理Unicode文件,因此如果您不需要Unicode,则不要定义SXMLC_UNICODE并且二进制文件不会有任何权重增加。

我还要说它在将XML写回磁盘时保留注释 ! 当人们花时间在XML文件中解释配置语法(“put’true’以启用特殊压缩……”)时,我总是感到遗憾,这些文件在应用程序保存后会被擦除。

它在Linux和Windows下编译。 我很乐意将人们愉快地嵌入到路由器中。

因为我想尽可能简单,我可能不会添加新function,而是改进现有function(当然还有正确的错误!:))。 除非报告错误,否则我的开发不是很积极。