如果我有一个大的XML文档,我不想将其完全加载到内存中,以及一些可配置的值,如XPath语句或其他格式,用于标识xml中元素的路径,是否可以读取来自节点的节点中的xml,直到找到我要查找的位置?
我们需要构建工具以在不知道架构的情况下从xml中提取值。我们所拥有的只是xml文档和xpath语句。我们可能会修改使用除xpath之外的其他东西,但我们真的想避免加载整个文档,因为我们需要实时处理,而xml可能相当大,并且卷可能会变高。
答案 0 :(得分:1)
LibXML2提供了一个流API(您可以在其中一次解析一个文档)以及XPath。混合这两者并不像标准DOM解析器那样简单,但可以在每个元素的基础上进行。有关详细信息,请参阅此处:http://xmlsoft.org/xmlreader.html#Mixing
答案 1 :(得分:0)
你可以用Saxon-EE做到这一点。最简单的方法可能是使用XQuery文档投影:见这里
http://www.saxonica.com/documentation/sourcedocs/projection.xml
答案 2 :(得分:0)
尝试http://code.google.com/p/jlibs/wiki/XMLDog
XMLDog可以使用SAX评估xpath(i,e而不将整个文档加载到内存中)