从多个xml文件中的树中获取元素,但树不在所有文件中

时间:2015-06-17 09:19:15

标签: python xml

这是我的代码,有一些我想问的问题。

import lxml.etree as etree
from xml.etree import ElementTree
import glob

openFiles = 'myxml/*.xml'

list = []

for xmlfiles in glob.glob(openFiles):
    tree = ElementTree.parse(xmlfiles)

    for node in tree.iter('c1'):
        branch_coverage = node.attrib.get('percentage')
        list4.append(branch_coverage)
    else:
        list4.append("none")
...

我想从树上打印一些元素。我有68个xml文件,我想处理。但并非所有文件都有树(" c1")。所以在else语句中我尝试打印" none"。当我运行我的程序时,这就是问题所在。输出始终打印"无"在打印"百分比"

之后

例如

输出错误:

  

无,100%,无,100%,无,100%,无,无,无,100%,无

预期产出:

  

无,100%,100%,100%,无,无,100%

2 个答案:

答案 0 :(得分:1)

出现此问题的原因是,您将else放在for之后,因此在for循环结束后始终会调用else部分,因为for循环在其条件变为{{1所以它进入False部分。

你需要像 -

这样的东西
else

答案 1 :(得分:0)

您可以尝试使用标志:

for xmlfiles in glob.glob(openFiles):
    tree = ElementTree.parse(xmlfiles)
    found = False

    for node in tree.iter('c1'):
        branch_coverage = node.attrib.get('percentage')
        list4.append(branch_coverage)
        found = True
    if not found:
        list4.append("none")
...