1. 前言
Python 是一種靈活的程式語言,能夠輕鬆處理各種資料格式。其中,XML(可擴展標記語言)經常被用於交換和儲存結構化資料,廣泛應用於 API 回應與設定檔。在 Python 中,可以使用標準函式庫或第三方函式庫輕鬆操作 XML。本文將從基礎到進階,詳細說明如何使用 Python 來處理 XML,並搭配實用的程式碼範例協助理解。
2. Python 中處理 XML 的函式庫介紹
2.1 標準函式庫:xml.etree.ElementTree
Python 的標準函式庫 xml.etree.ElementTree
是一個非常實用的工具,可以輕鬆讀取與寫入 XML 檔案,並對樹狀結構進行搜尋與編輯。
- 基本解析:
import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() print(root.tag) # 輸出: "data"
這段程式碼讀取名為data.xml
的 XML 檔案,並顯示根元素的標籤。輸出結果會是「data」。 - 當檔案不存在時的錯誤處理:
如果檔案不存在,會拋出FileNotFoundError
,因此可加入以下例外處理:
try: tree = ET.parse('data.xml') root = tree.getroot() except FileNotFoundError: print("找不到檔案。")
2.2 外部函式庫:lxml
若需要進行更高階的 XML 操作,建議使用 lxml
函式庫。lxml
支援強大的 XPath 和 XSLT 處理功能,可以簡化許多標準函式庫難以完成的操作。
- 使用 XPath 取得元素:
from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country[@name="Liechtenstein"]') print(countries[0].tag) # 輸出: "country"
這段程式碼會取得name
屬性為「Liechtenstein」的country
元素。

3. XML 的解析與操作
3.1 基本解析步驟
若要解析 XML 檔案並操作其樹狀結構,可以使用 xml.etree.ElementTree
的 parse()
方法。此方法會讀取 XML 檔案並取得樹的根元素。
- 從檔案解析:
import xml.etree.ElementTree as ET tree = ET.parse('example.xml') root = tree.getroot() print(root.tag) # 輸出: "rootTag"
這段程式碼會讀取 XML 檔案example.xml
,並顯示根元素的標籤名稱。
3.2 元素搜尋與屬性操作
要搜尋 XML 元素時,可以使用 find()
或 findall()
方法。透過這些方法可以輕鬆取得特定元素或其屬性。
- 搜尋元素並取得屬性:
country = root.find('country') print(country.get('name')) # 輸出: "Liechtenstein"
- 操作屬性:
若要操作 XML 元素的屬性,可以使用get()
來取得,使用set()
來設定。
country.set('currency', 'CHF') print(country.attrib) # 輸出: {'name': 'Liechtenstein', 'currency': 'CHF'}
4. 編輯與儲存 XML
4.1 編輯元素的方法
可以透過修改 XML 元素的文字或屬性,來編輯 XML 的內容。以下是修改元素文字的範例:
- 編輯元素文字:
rank = root.find('.//rank') rank.text = '2' print(rank.text) # 輸出: "2"
4.2 將 XML 寫入檔案
若要將修改後的 XML 儲存到檔案中,可以使用 write()
方法。
- 儲存 XML:
tree.write('updated_data.xml')

5. 使用外部函式庫進行進階處理
5.1 使用 lxml 進行進階的 XML 操作
透過 lxml
函式庫,可以進行複雜的 XPath 查詢,或使用 XSLT 將 XML 轉換為其他格式。
- 使用 XPath 搜尋元素:
from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country') for country in countries: print(country.get('name'))
5.2 使用 XSLT 轉換 XML
以下是一個將 XML 轉換成 HTML 的範例,使用的是 XSLT。
- 從 XML 轉換為 HTML:
from lxml import etree xml_tree = etree.parse('data.xml') xsl_tree = etree.parse('style.xsl') transform = etree.XSLT(xsl_tree) result_tree = transform(xml_tree) result_tree.write('output.html', pretty_print=True)
6. 實作:範例程式碼與解說
6.1 從 XML 中提取資料的範例
這是一個從 XML 檔案中提取資料並顯示特定資訊的範例程式碼。
- 範例程式碼:
import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() for country in root.findall('country'): name = country.get('name') rank = country.find('rank').text print(f"Country: {name}, Rank: {rank}")
6.2 編輯並儲存 XML 的範例
這是一個修改 XML 元素數值並儲存變更後檔案的範例程式碼。
- 範例程式碼:
import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() rank = root.find('.//rank') rank.text = '2' tree.write('updated_data.xml')
7. 結語
在 Python 中處理 XML,可以使用標準函式庫 xml.etree.ElementTree
來進行基本操作,這非常簡單易用。如果需要進階功能,像是 XPath 或 XSLT 的處理,可以透過 lxml
來實現。請參考本文中的程式碼範例,親自試著操作看看,提升你的 XML 處理技巧。