我使用lxml etree来解析xml文件,并希望确保文件中有一些字段。我的代码就像这样。
try:
with open(filename, 'r') as conf:
rt = etree.parse(conf)
CONF['user1'] = rt.findtext('//user1')
if not CONF['user1']:
raise ValueError('Cannot find uer1 in conf file')
CONF['field2'] = rt.findtext('//field2')
if not CONF['field2']:
#raise again
# And so on
Except Exception as err:
print err
你可以看到编码很繁琐。是否有类似rt.findtext('//field', default=rasie exception("With my message"))
的内容?
答案 0 :(得分:3)
我没有看到任何这样的方法直接执行此操作,但您可以创建自己的函数来执行此操作,示例 -
def findtext_with_exception(element,xpath,message):
ret = element.findtext(xpath)
if not ret:
raise ValueError(message)
return ret
然后您可以使用此方法代替findtext作为 -
CONF['user1'] = findtext_with_exception(rt, '//user1', 'Cannot find uer1 in conf file')
CONF['field2'] = findtext_with_exception(rt, '//field2', '<Next message>')