如何使用 Python 處理 XML 格式檔案 (Process XML file With Python)
2020-06-16
最近有處理 XML 檔案的需求,第一時間想到的就是 Python ,上一次處理 XML 已經是四、五年前的事情了,當時雖然有已經在工作上使用 Python ,但對於物件導向以及模組的運用仍是十分陌生,記得當時處理 XML 的方式就是當成字串來處理,現在想起不經莞爾。
而這次同樣使用 Python 的處理 XML ,搭配著 Built-in Battery 的 ElementTree 模組,處理起來行雲流水十分順利,特此筆記以供日後有同樣的需求時參考。
範例程式碼
載入 XML
import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml') # From file
tree = ET.fromstring(xmlStrings) # From XML String
root = tree.getroot()
取得標籤資訊 (TagName, Value, Attribute)
print(root.tag)
print(root.find('element').text)
print(root.find('element').attrib)
尋找元素 (Find, FindAll)
Find : 找到指定節點下的第一個特定節點
Findall : 找到指定節點下的所有特定節點
for ele in root.findall('Element'):
...
迭代尋找 (Iter)
找出節點下的符合的子節點、孫節點。
for ele in root.iter('Element'):
...
設定值 (text, set)
root.text = 'textValue' # Set text
root.set('attr', value) # Set attrib
建立元素與將元素字串化 (Element, SubElement, Dump)
a = ET.Element('a')
b = ET.SubElement(a, 'b')
c = ET.SubElement(a, 'c')
d = ET.SubElement(c, 'd')
ET.dump(a)
'<a><b /><c><d /></c></a>'
迭代取出值
xmlString = '<a><b>1<c>2<d/>3</c></b>4</a>'
tree = ET.fromstring(xmlString)
"".join(tree.itertext())
'1234'