Python解析xml找出同目錄標籤

什麼是 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章