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