Python 解析 XML 数据的正确姿势( 五 )

end,然后判断元素的tag是否为location,以及其文本值是否符合目标值 。另外,调用elem.clear非常关键:因为iterparse仍然会生成一个树,只是循序生成的而已 。废弃掉不需要的元素,就相当于废弃了整个树,释放出系统分配的内存 。
当利用上面这个脚本解析同一个文件时,内存使用峰值只有7MB,运行时间为2.5秒 。速度提升的原因,是我们这里只在树被构建时,遍历一次 。而使用 parse的标准方法是先完成整个树的构建后,才再次遍历查找所需要的元素 。
iterparse的性能与SAX相当,但是其API却更加有用:iterparse会循序地构建树;而利用SAX时,你还得自己完成树的构建工作 。




推荐阅读