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