文章參考:
xml是一種廣泛使用的格式,python自身附帶了乙個完整的xml解析工具包,它支援sax和dom解析模式,此外還有乙個名為elementtree的包。這是特定於python的專門用於解析和構造xml的api。除了基本的解析,開源領域還提供了額外的xml工具,例如xpath、xquery、xslt等。
官方建議:尚未熟悉dom的使用者應考慮使用xml.etree.elementtree模組進行xml處理。鑑於我是個菜鳥,因此主要記錄一下使用elementtree進行xml檔案解析的過程。xml.etree.elementtree模組實現了乙個簡單而有效的api,用於解析和建立xml資料。
使用下面的xml檔案作為例項
<?xml version="1.0"?>
12008
141100
42011
59900
682011
13600
使用下面的方法讀取該檔案:
import xml.etree.elementtree as et
tree = et.parse('country_data.xml')
root = tree.getroot()
此時的根結點是節點
>>> root.tag
'data'
>>> root.attrib
{}
對它的子節點進行迭代:
>>> for child in root:
... print(child.tag, child.attrib)
...country
country
country
子項是巢狀的,我們可以通過索引訪問特定的子節點:
>>> root[0][1].text
'2008'
可以使用下面的函式讀取根結點下面的所有子樹(它的子節點,子節點的子節點等等)。
element.iter():
>>> for neighbor in root.iter('neighbor'):
... print(neighbor.attrib)
...
element.findall()僅查詢帶有標記的元素,這些元素是當前元素的直接子元素。
element.find()查詢具有特定標記的第乙個子元素。
element.text訪問元素的文字內容。
element.get()訪問元素的屬性。
>>> for country in root.findall('country'):
... rank = country.find('rank').text
... name = country.get('name')
... print(name, rank)
...liechtenstein 1
singapore 4
panama 68
更複雜的指定要查詢的元素可以使用xpath工具。
elementtree提供了一種構建xml文件並將其寫入檔案的簡單方法。
elementtree.write()寫入xml檔案。
element.text讀取或修改字段。
element.set()新增或修改屬性。
element.remove()移除子節點。
假設我們對每個國家/地區的排名加一,並在rank元素中新增更新的屬性:
>>> for rank in root.iter('rank'):
... new_rank = int(rank.text) + 1
... rank.text = str(new_rank)
... rank.set('updated', 'yes')
...>>> tree.write('output.xml')
修改後的檔案:
<?xml version="1.0"?>
22008
141100
52011
59900
692011
13600
假設我們要刪除排名高於50的所有國家/地區:
>>> for country in root.findall('country'):
... rank = int(country.find('rank').text)
... if rank > 50:
... root.remove(country)
...>>> tree.write('output.xml')
處理結果:
<?xml version="1.0"?>
22008
141100
52011
59900
Python解析xml檔案
war,thriller 2003 pg10 talk about a us japan war science fiction 1989r8 a schientific fiction action 4 pg10 vash the stampede comedy vhspg 2viewable b...
Python解析xml檔案
解析 xml 格式的檔案有多種方法,這裡只介紹使用 xml.etree.elementtree 這種解析方式.elementtree在 python 標準庫中有兩種實現。一種是純 python 實現例如 xml.etree.elementtree 另外一種是速度快一點的 xml.etree.cele...
python 解析xml檔案
et.parser 用法 python3 xml解析模組xml.etree.elementtree簡介 刪除重複xml節點 import xml.etree.elementtree as et 匯入xml模組 root et.parse gho.xml 分析指定xml檔案 tree root.get...