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