用途
話說JSON在寫法上比較方便, 但遇到大型的文件, 如C# WPF的XAML, Swing的UI Form, 都是以XML的格式儲存. 這些具有複雜的階層關係, 使用JSON是無法讓人輕易的了解.
所以解析XML似乎成了必要的功能. . 那要如何轉換成C#/Java的語言呢, 第一步當然是要先作解析
解析模組
常見解析XML的接口有三個
DOM(Document Object Model) : 將XML解析成一顆樹, 效能差
SAX(Simple API for XML) : 使用事件驅動模型, 效能好, 佔用記憶体少. 但不方便使用
ElementTree(元素樹) : 為上面二個的綜合体, 方便使用, 且效能跟SAX一樣, 且不佔太多的記憶体.
由以上的分析, 盡可能使用ElementTree
Import
在Python 3.3之前, 請使用如下import. cElementTree是使用C語言寫成的, 速度較快. ElementTree則是由純Python寫成. 因有的環境沒有cElementTree, 所以需使用try-except
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
但如果是Python 3.3及以上, 使用如下即可. 它會自動去找cElementTree, 若沒有, 才找ElementTree
import xml.etree.ElementTree as ET
請注意, 開啟新檔案測試時, 檔案名稱千萬別命名為 xml.py, 因為xml.py為系統的套件檔案, xml.etree就是寫在這個檔案裏, 請不要覆蓋這個檔案. 否則會發生 No module named ‘xml.etree’
XML檔案內容
請在專案目錄下新增如下文字檔 index.html
