我正在开发一个嵌入式系统的项目,该系统使用XML将数据输入和输出系统。我不希望XML处理转换为使用snprintf()
/ strcat()
和朋友构建XML字符串的一堆位,或者通过计算“<
”和“{{1来解析XML “}字符。
我发现了几个XML库,其中一些甚至可能足够小,但它们最接近C的是C ++,这不是这个系统的卡片。我希望我能找到一个满足以下约束条件的XML库:
它不一定是一个完整的解析器 - 我只是希望能够从嵌套元素中提取文本,并且有一种相当简单的方法来生成不依赖于格式字符串的XML。尚未使用属性,因此库甚至不需要支持它们。 XML文档非常小,所以类似DOM的东西就可以了,只要它可以与客户端提供的缓冲区一起工作(就地解析原始XML会很好)。
PugXML和TinyXML看起来非常接近,但我希望那里的人知道一个专为基于C的嵌入式系统定制的XML库,我的Google搜索功能缺失了。
答案 0 :(得分:13)
我不知道动态内存分配,但标准的C XML解析器是expat,它是许多解析器的底层库。
答案 1 :(得分:4)
我不确定,但也许Mini-XML: Lightweight XML Library会帮助你:
答案 2 :(得分:1)
您可以使用ASN.1 XER编码器;在http://lionet.info/asn1c/
有一个免费的答案 3 :(得分:1)
答案 4 :(得分:1)
我写sxmlc尽可能简单,我知道人们在路由器中使用它来执行Web查询的就地解析。
不幸的是(而且我已经晚了5年......)它确实使用了内存分配,尽管保持在最低限度:一个缓冲区来读取每个内容并且#34; XML行&#34; (<
和>
之间的内容,抱歉;)),以及许多小缓冲区来跟踪标记名称,属性名称和值以及文本(尽管我一直想使用{{1对于那些人来说是这样的。)
它使用char[16]
/ strdup
等。
我希望任何人都可以自由使用它,许可证是BSD。
答案 5 :(得分:0)
在这种情况下,Xerces-C库将是最佳使用方式。
如果它将是非常小的XML,为什么不以编程方式生成,使用sprintf或其他东西并使用字符串提取函数来解析相同的内容。但正如前面提到的,如果有点大,建议使用Xerces-c Library,因为它是开源的