2011-06-08 75 views
2

我使用Python和minidom命名的第一次,並希望從元素像得到一個值:獲得一個minidom命名XML子節點的值安全

<test>value</test> 

這是精細和簡單,但如果該值是空的或元素不存在,那麼我想回到默認值。我找不到任何簡單的方法來做到這一點在Python,所以我最後寫了以下功能:

def getXmlValue(address, default): 
    """Return XML node value if available, otherwise return a default""" 

    # If the xml element is empty then we get an IndexError exception, 
    # if the xml element is missing then the 'if' statement is false 
    if address: 
     try: 
     return address[0].childNodes[0].nodeValue 
     except IndexError: 
     return default 

    return default 

要調用這個我使用類似:

test = getXmlValue(node.getElementsByTagName('test'), '666') 

這做這項工作,並似乎工作好,但似乎並不是那麼高效或優雅。

有沒有更好的方法來做到這一點或有什麼不對嗎?

+0

這看起來是一個完美合理的方式來獲得沒有錯誤的值。 – 2011-06-11 09:24:41

回答

2

如果您使用ElementTree它應該更容易。

from xml.etree.ElementTree import ElementTree, fromstring 

xml = '<test>value</test>' 
root = fromstring(xml) 
test = root.text or '666' 
0

因爲的childNodes將是一個數組,怎麼樣只是做了長度檢查,否則決定。在我的一些代碼中,我有下面的東西。如果childNode.length> 0,那麼我分配一個childNode [0]數據,否則只是一個空字符串。

   my_element = alertitem.getElementsByTagName('solution')[0] 
       result.mydata= my_element.childNodes[0].data if my_element.childNodes.length > 0 else '' 

給我,似乎比嘗試除了更好。