如果我有一个大的XML文档,我不想把它完全加载到内存中,并且有一些可配置的值,如XPath语句或识别XML中元素的路径的其他格式,是否有可能从一个节点一个节点地读取XML,直到我找到我正在寻找的位置?
我们需要构建一些工具,以便在不知道模式的情况下从xml中提取值。我们所拥有的只是xml文档和xpath语句。我们可能会修改为使用xpath以外的东西,但我们确实希望避免加载整个文档,因为我们需要实时处理,xml可能相当大,并且容量可能会很高。
LibXML2提供了一个流API(您可以在其中一次解析一个文档块)和XPath。混合使用这两种解析器并不像使用标准DOM解析器那样简单,但是可以在每个元素的基础上进行。查看更多信息:http://xmlsoft.org/xmlreader.html#Mixing
您可以使用Saxon-EE执行此操作。最简单的方法可能是使用XQuery文档投影:参见这里
http://www.saxonica.com/documentation/sourcedocs/projection.xml试试http://code.google.com/p/jlibs/wiki/XMLDog
XMLDog可以使用SAX求值xpath(例如,不需要将整个文档加载到内存中)