我第一次使用Python和minidom,并希望从元素中获取值:
<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 :(得分:2)
如果您使用ElementTree
,则应该更容易。
from xml.etree.ElementTree import ElementTree, fromstring
xml = '<test>value</test>'
root = fromstring(xml)
test = root.text or '666'
答案 1 :(得分:0)
因为 childNodes 将成为一个数组,所以如何进行长度检查和否则。在我的一些代码中,我有类似下面的内容。如果childNode.length&gt; 0然后我分配一个childNode [0]数据,否则只是一个空字符串。
my_element = alertitem.getElementsByTagName('solution')[0]
result.mydata= my_element.childNodes[0].data if my_element.childNodes.length > 0 else ''
对我来说,似乎比尝试更好。