繁体   English   中英

解析多个 XML 虽然并非所有文件都包含带有 python 的元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM