我正在寻找一个XPath评估器,它不重build整个DOM文档来查找文档的节点:实际上,对象是用SAX模型pipe理大量的XML数据(理想情况下超过2Gb)有利于内存pipe理,并可以search节点。 谢谢大家的支持! 对于所有那些说不可能的人:我最近在问了这个问题之后,find了一个名为“saxpath”的项目( http://www.saxpath.org/ ),但是我找不到任何的实施项目。
Python有几种方法来parsingXML … 我理解用SAXparsing的基础知识。 它作为一个streamparsing器,具有事件驱动的API。 我也了解DOMparsing器。 它将XML读入内存,并将其转换为可以用Python访问的对象。 一般来说,根据你需要做什么,记忆的限制,性能等,在2之间进行select是很容易的。 (希望我到目前为止是正确的)。 从Python 2.5开始,我们也有ElementTree 。 这与DOM和SAX相比如何? 哪个更类似? 为什么比以前的parsing器更好?
像SAX和StAX这样的stream式xmlparsing器比构build像DOMparsing器这样的树结构的parsing器更快,更有效。 SAX是一个推式parsing器,这意味着它是观察者模式的一个实例(也称为侦听器模式)。 SAX先在那里,但后来又到了StAX–一个拉parsing器,这意味着它基本上像迭代器一样工作。 您可以find为什么StAX比SAX更喜欢SAX的原因,但通常归结为:“使用更简单”。 在JAXP的Java教程中,StAX被隐约地表述为DOM和SAX之间的中间部分:“比SAX更容易,比DOM更高效”。 但是,我从来没有发现任何StAX比SAX更慢或更less内存效率的线索。 所有这些让我怀疑: 有什么理由selectSAX而不是StAX?
我正在学习这个教程 。 它工作得很好,但我希望它返回一个数组与所有的字符串,而不是与最后一个元素的单个字符串。 任何想法如何做到这一点?