用于嵌入式系统的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库将帮助您:
- Mini-XML仅需要ANSI C兼容的编译器。
- 这是免费软件。
- 它的二进制大小约为100k。
- 它解析整个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,因为它是开源的