2011-01-13 155 views
7

我知道至少三个轻量级C++ XML解析器:RapidXML,TinyXMLPugiXML。但是,三者都使用基于DOM的接口(即,它们构建自己的XML文档的内存中表示,然后提供一个接口来遍历和操作它)。对于我必须处理的大多数情况,我更喜欢SAX接口(解析器只是吐出一系列事件,比如标签的开始,而应用程序代码根据这些事件负责做任何事情) 。轻量级C++ SAX XML解析器

任何人都可以推荐具有SAX接口的轻量级C++ XML库吗?编辑:我还应该注意微软XmlLite库,其中确实使用SAX接口(实际上,它实际上是一个“拉”接口,甚至可能更好)。不幸的是,它现在排除了我,因为据我所知它只是封闭的源代码和Windows(如果我错了,请纠正我)。

+0

https://github.com/ igagis/mikroxml – igagis 2017-08-29 15:41:48

回答

5

当我需要解析XML时,我已经使用了expat。这是非常轻量级的(好吧,它曾经是,因为我已经完成了XML工作,这是一段时间)并完成这项工作。

+0

我必须承认,我没有给予外派应有的注意。你用它与C++包装?如果是这样,哪一个? – 2011-01-13 19:52:38

0

PugiXML和RapidXML没有DOM符合接口..这些API在功能和一致性方面受到严重限制。您可能想要研究明显比DOM或SAX/Pull更高级的VTD-XML

5

您可以尝试http://die-xml.googlecode.com/。这似乎是非常小的,易于使用的

这是最近做的C++ 0x XML SAX解析器开源和笔者愿意反馈

它解析输入流和兼容回调生成事件的std ::功能

堆栈该机采用有限自动机作为后端和一些事件(开始标签和文本节点),以尽量减少缓冲使用迭代器,使得它非常轻便