使用 iterparse 打开和读取大型 XML 文件(增量解析)

有时我们不想加载整个 XML 文件以获取我们需要的信息。在这些情况下,能够递增加载相关部分,然后在完成时删除它们是有用的。使用 iterparse 函数,你可以编辑解析 XML 时存储的元素树。

导入 ElementTree 对象:

import xml.etree.ElementTree as ET

打开 .xml 文件并迭代所有元素:

for event, elem in ET.iterparse("yourXMLfile.xml"):
    ... do something ...

或者,我们只能查找特定事件,例如开始/结束标记或命名空间。如果省略此选项(如上所述),则仅返回 end 事件:

events=("start", "end", "start-ns", "end-ns")
for event, elem in ET.iterparse("yourXMLfile.xml", events=events):
    ... do something ...

下面是完整的示例,说明如何在完成它们时从内存树中清除元素:

for event, elem in ET.iterparse("yourXMLfile.xml", events=("start","end")):        
    if elem.tag == "record_tag" and event == "end":
        print elem.text
        elem.clear()
    ... do something else ...