检查流中的XML

时间:2011-10-01 20:05:00

标签: xml stream xml-parsing

如果我有一个大的XML文档,我不想将其完全加载到内存中,以及一些可配置的值,如XPath语句或其他格式,用于标识xml中元素的路径,是否可以读取来自节点的节点中的xml,直到找到我要查找的位置?

我们需要构建工具以在不知道架构的情况下从xml中提取值。我们所拥有的只是xml文档和xpath语句。我们可能会修改使用除xpath之外的其他东西,但我们真的想避免加载整个文档,因为我们需要实时处理,而xml可能相当大,并且卷可能会变高。

3 个答案:

答案 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而不将整个文档加载到内存中)