【发布时间】:2012-02-08 18:53:42
【问题描述】:
我正在尝试从 xml 文件中提取数据。我的代码示例如下:
from xml.dom import minidom
dom = minidom.parse("algorithms.xml")
...
parameter = dom.getElementsByTagName("Parameters")[0]
# loop over parameters
try:
while True:
parameter_id = parameter.getElementsByTagName("Parameter")[m].getAttribute("Id")
parameter_name = parameter.getElementsByTagName("Name")[m].lastChild.data
...
parameter_default = parameter.getElementsByTagName("Default")[m].lastChild.data
print parameter_id
print parameter_default
m = m+1
except IndexError:
#reached end of available parameters
pass
#except AttributeError:
#parameter doesn't exist
#?
如果每个参数的所有元素都存在,则代码运行正确。不幸的是,我提供的数据中经常缺少条目,从而引发 AttributeError 异常。如果我只是传递该错误,那么任何确实存在但在循环中稍后检索的元素都会被跳过,而不是发生异常时,这是我不想要的。如果引发此特定异常,我需要一些方法来继续代码停止的地方并跳到下一行代码。
我能想到的解决这个问题的唯一方法是重写 minidom 的类方法并在那里捕获异常,但这似乎太混乱了,而且工作量太大,无法处理应该是一个非常简单和常见的问题.有没有更简单的方法来处理我错过的这个问题?
【问题讨论】:
-
AttributeError不是 minidom 异常...它指的是尝试访问不存在的 Python 对象属性。如果该属性不存在,Minidom 的getAttribute()方法将返回一个空字符串。请提供示例堆栈跟踪并确定代码中引发异常的语句。
标签: python python-3.x