[英]Parse multiple XML although not all files have the elements with python
这是我的代码,我有一些问题..
from xml.dom import minidom
openFiles = 'myxml/*.xml'
list = []
for xmlfiles in glob.glob(openFiles):
doc = minidom.parse(xmlfiles)
root = doc.getElementsByTagName("info")[0]
project_name = root.getAttribute('project_name')
list.append(project_name)
....
此代码工作正常。 但不知何故,因为我运行打开多个文件它的错误。 原因是因为并非所有文件都包含“信息”元素。 那么有没有办法让它保持运行并将其更改为“无”?
所以例子变成这样
项目 1、项目 2、无、项目 3、无
抱歉我的英语不好,提前谢谢你
您可以添加try...except
处理,根据常见的 Python 编码原则 EAFP(更容易请求宽恕而不是权限),如果 XML 中没有'info'
元素,则将处理异常并将None
添加到列表中:
for xmlfiles in glob.glob(openFiles):
doc = minidom.parse(xmlfiles)
root = None
try:
root = doc.getElementsByTagName('info')[0]
except IndexError:
list.append(None)
if root:
project_name = root.getAttribute('project_name')
list.append(project_name)
....
或者您可以使用 LBYL(Look before you jump)编码原则并在获取其属性之前检查'info'
是否在 XML 中:
for xmlfiles in glob.glob(openFiles):
doc = minidom.parse(xmlfiles)
if len(doc.getElementsByTagName('info')):
root = doc.getElementsByTagName('info')[0]
project_name = root.getAttribute('project_name')
list.append(project_name)
else:
list.append(None)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.