嵌入式系统的C XML库

时间:2009-07-15 14:20:10

标签: c xml embedded

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

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

  • C源代码
  • 没有动态内存分配
  • 便宜。自由是更好的,但是copyleft不会做到这一点。

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

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

6 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:4)

我不确定,但也许Mini-XML: Lightweight XML Library会帮助你:

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

答案 2 :(得分:1)

您可以使用ASN.1 XER编码器;在http://lionet.info/asn1c/

有一个免费的

答案 3 :(得分:1)

您可以使用the one中的Gnome

答案 4 :(得分:1)

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

不幸的是(而且我已经晚了5年......)它确实使用了内存分配,尽管保持在最低限度:一个缓冲区来读取每个内容并且#34; XML行&#34; (<>之间的内容,抱歉;)),以及许多小缓冲区来跟踪标记名称,属性名称和值以及文本(尽管我一直想使用{{1对于那些人来说是这样的。)

它使用char[16] / strdup等。

我希望任何人都可以自由使用它,许可证是BSD。

答案 5 :(得分:0)

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

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