什麼是 XML?
XML 指可擴展標記語言(eXtensible Markup Language)。 你可以通過本站學習 XML 教程
XML 被設計用來傳輸和存儲數據。
XML 是一套定義語義標記的規則,這些標記將文檔分成許多部件並對這些部件加以標識。
它也是元標記語言,即定義了用於定義其他與特定領域有關的、語義的、結構化的標記語言的句法語言。
Python 對 XML 的解析
常見的 XML 編程接口有 DOM 和 SAX,這兩種接口處理 XML 文件的方式不同,當然使用場合也不同。
Python 有三種方法解析 XML,SAX,DOM,以及 ElementTree:
1.SAX (simple API for XML )
Python 標準庫包含 SAX 解析器,SAX 用事件驅動模型,通過在解析XML的過程中觸發一個個的事件並調用用戶定義的回調函數來處理XML文件。
2.DOM(Document Object Model)
將 XML 數據在內存中解析成一個樹,通過對樹的操作來操作XML。
3.ElementTree(元素樹)
ElementTree就像一個輕量級的DOM,具有方便友好的API。代碼可用性好,速度快,消耗內存少。
注:因DOM需要將XML數據映射到內存中的樹,一是比較慢,二是比較耗內存,而SAX流式讀取XML文件,比較快,佔用內存少,但需要用戶實現回調函數(handler)
本部分通過使用Dom方法,在不影響運行的情況下,通過標籤內容獲取該標籤目錄下的兄弟節點。
通過標籤sentence中的內容獲取到對應的value值。
首先,我們需要通過sentence標籤,獲取到其對應的內容,
解析整個xml文件,獲取根節點;
document_tree = xml.dom.minidom.parse('sentencetype.xml')
root = document_tree.documentElement
獲取每一個part組,並分別進行遍歷;
parts = root.getElementsByTagName("part")
for part in parts:
通過sentence標籤,獲取該標籤對應的內容值;
sententce = part.getElementsByTagName('sentence')[0]
pips = sententce.childNodes[0].data
判斷獲取到的內容值是否滿足條件,滿足條件則將對應的兄弟標籤取出來;
if pips。。。。:
values = part.getElementsByTagName('value')[0]
value = values.childNodes[0].data
整體的代碼如下所示:
def question(questions):
#解析xml文件
document_tree = xml.dom.minidom.parse('sentencetype.xml')
root = document_tree.documentElement
zhi = ''
#獲取每組part
parts = root.getElementsByTagName("part")
#遍歷part
for part in parts:
#獲取sentence對應的值
sententce = part.getElementsByTagName('sentence')[0]
pips = sententce.childNodes[0].data
#獲取sentence同目錄下的其他標籤值
values = part.getElementsByTagName('value')[0]
value = values.childNodes[0].data
#判斷是否標籤值滿足條件
if pips in questions:
zhi = value
break
#返回滿足的兄弟標籤值
return zhi