使用常量内存进行xml解析

时间:2011-04-16 08:52:29

标签: c++ xml memory xpath xqilla

我正在尝试使用xpath支持找到xml解析器,它使用少量内存,或者说相当恒定的内存量,我正在尝试解析大型xml文件,比如差不多1千兆,我一直在阅读xqilla,它似乎是使用了非常大量的内存,因为它是基于dom的,如果我错了,请纠正我。 无论如何,对于C ++和XML的这种xml解析器的任何想法linux?

3 个答案:

答案 0 :(得分:1)

如果您可以在一次传递中处理XML,那么SAX解析器将是一个好主意。 Apache Xerces C++怎么样?

答案 1 :(得分:0)

您可以查看

  

pugixml 可实现非常快速,方便且内存有效的XML文档处理。但是,由于pugixml有一个DOM解析器,它无法处理不适合内存的XML文档;解析器也是非验证的,所以如果你需要DTD / Schema验证,那么这个库不适合你

然而,它显然不是流式解析器。我知道流媒体和xpath一般都不好(由于潜在的随机访问要求)。尽管如此,在.NET中, ever-famous XPathReader 似乎弥补了XPath流行子集的差距:)

答案 2 :(得分:0)

Saxon-EE支持使用XSLT或XQuery流式传输大型XML文档(XSLT比XQuery更好地支持流式传输)。详情请见http://www.saxonica.com/documentation/sourcedocs/streaming.xml