使用 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 ...