优雅地从lxml中的解析错误中恢复

时间:2015-02-21 13:09:49

标签: python xml parsing exception lxml

我想继续解析无效的XML文件,但要捕获变量中无效文件的数量。试试这个:

    try:
        parser = etree.XMLParser(recover=False)
        tree = etree.parse(rawfile, parser=parser)
        print "Good XML!"
    except etree.XMLSyntaxError:
        parser = etree.XMLParser(recover=True)
        tree = etree.parse(rawfile, parser=parser)
        print "Bad XML!"
        misformattedXMLFile += 1

    root = tree.getroot()

但是当引发异常时,即使正确访问了“except”子句,也不会设置“root”元素(它是“None”)。如果我在没有任何try / except的情况下运行它,只需使用“recover = True”,就可以正确设置root并处理文件。我在哪里弄错了?

1 个答案:

答案 0 :(得分:1)

您可以使用finally

try:
   #something
except etree.XMLSyntaxError:
    #onotherthing

finally:
    root = tree.getroot()