在ElementTree中标记Findall的空XML结果

时间:2013-12-03 15:22:53

标签: python xml elementtree findall

我正在编写一个python脚本来查找XML文件中的各种标记,并且如果找不到特定标记(表示我们的元数据不完整),则希望发出警告。这适用于只有一个实例的元素:

try:
    element = tree.find("idinfo/descript/abstract")
    if element is None:
        print "(!) No description/abstract in file"
    print "ABSTRACT: {}".format(element.text)
except:
    print "(!) No description/abstract found"

此循环适用于查找所有procdate元素,但在没有任何错误消息时,不会给出“if None”或“except”警告版本。< / p>

try:
    for element in tree.findall("dataqual/lineage/procstep/procdate"):
        if element is None:
            print "(!) No revision date in file"
        print "REVISION DATE: {}".format(element.text)
except:
    print "(!) No revision date found"

[如果我不能主动标记为空的东西,这不是什么大问题,但能够提醒用户会很高兴...]

1 个答案:

答案 0 :(得分:2)

如果未找到任何内容,findall()将返回一个空列表。首先测试:

results = tree.findall("dataqual/lineage/procstep/procdate")
if not results:
    print "(!) No revision date found"
else:
    for element in results:
        print "REVISION DATE: {}".format(element.text)

not results就足够了,因为空容器在布尔上下文中测试为false。