用于嵌入式系统的C XML库

我正在开发一个嵌入式系统的项目,该系统使用XML将数据输入和输出系统。 我不希望XML处理转换成一堆使用snprintf() / strcat()和朋友构建XML字符串的位,或者通过计算“ < ”和“ > ”字符来解析XML。

我发现了几个XML库,其中一些甚至可能足够小,但它们最接近C的是C ++,这不是这个系统的卡片。 我希望我能找到一个满足以下约束条件的XML库:

  • C源代码
  • 没有动态内存分配
  • 廉价。 免费更好,但Copyleft不会这样做。

它不一定是一个完整的解析器 – 我只是希望能够从嵌套元素中提取文本,并且有一种相当简单的方法来生成不依赖于格式字符串的XML。 属性尚未被使用(因此),因此库甚至不需要支持它们。 XML文档非常小,所以类似DOM的东西就可以了,只要它可以与客户端提供的缓冲区一起工作(就地解析原始XML会很好)。

PugXML和TinyXML看起来非常接近,但我希望那里的人知道一个专为基于C的嵌入式系统量身定制的XML库,我的谷歌搜索丢失了。

我不知道动态内存分配,但标准的C XML解析器是expat ,它是许多解析器的底层库。

我不确定,但也许Mini-XML:轻量级XML库将帮助您:

  1. Mini-XML仅需要ANSI C兼容的编译器。
  2. 这是免费软件。
  3. 它的二进制大小约为100k。
  4. 它解析整个xml文件,然后将所有信息存储到链表中。

您可以使用ASN.1 XER编码器; 在http://lionet.info/asn1c/有一个免费的

你可以使用Gnome中的 那个 。

我写过sxmlc尽可能简单,我知道人们在路由器中使用它来执行Web查询的就地解析。

不幸的是(我已经晚了5年……)它确实使用了内存分配,尽管保持在最低限度:一个缓冲区用于读取每个“XML行”(在<>之间,抱歉;),以及许多小的缓冲区以跟踪标记名称,属性名称和值以及文本(尽管我总是希望使用char[16]左右)。

它使用了strdup / strcpy等。

因为我想任何人都可以自由使用它,许可证是BSD。

在这种情况下,Xerces-C库将是最佳使用。

如果它将是非常小的XML,为什么不以编程方式生成,使用sprintf或其他东西并使用字符串提取函数来解析相同的。 但如前所述,如果有点大,建议使用Xerces-c Library,因为它是开源的