从 lxml 中的解析错误中优雅地恢复
Gracefully recover from parse error in 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 设置正确并且文件被处理。我哪里出错了?
您可以使用 finally
try:
#something
except etree.XMLSyntaxError:
#onotherthing
finally:
root = tree.getroot()
我想继续解析无效的 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 设置正确并且文件被处理。我哪里出错了?
您可以使用 finally
try:
#something
except etree.XMLSyntaxError:
#onotherthing
finally:
root = tree.getroot()