如何利用python分析大文件的xml800M

Python 解析xml有如下幾種方式:

1.SAX (simple API for XML )

Python 標(biāo)準(zhǔn)庫包含 SAX 解析器,SAX 用事件驅(qū)動模型,通過在解析XML的過程中觸發(fā)一個(gè)個(gè)的事件并調(diào)用用戶定義的回調(diào)函數(shù)來處理XML文件。

2.DOM(Document Object Model)

將 XML 數(shù)據(jù)在內(nèi)存中解析成一個(gè)樹,通過對樹的操作來操作XML。

3.ElementTree(元素樹)

ElementTree就像一個(gè)輕量級的DOM,具有方便友好的API。代碼可用性好,速度快,消耗內(nèi)存少。

注:因DOM需要將XML數(shù)據(jù)映射到內(nèi)存中的樹,一是比較慢,二是比較耗內(nèi)存,而SAX流式讀取XML文件,比較快,占用內(nèi)存少,但需要用戶實(shí)現(xiàn)回調(diào)函數(shù)(handler)。


我在工作中想解析roboframework的自動化結(jié)果output.xml文件,提取出case name, 特點(diǎn)是文件大于800M。開始的時(shí)候用的Dom樹方法,比較慢,耗內(nèi)存,直接卡死。

昨天選用了ElementTree的方式,解析很快。下面把解析代碼貼出來:

import xml.etree.ElementTreeas ET


參考:

https://docs.python.org/2/library/xml.etree.elementtree.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容