Python没有捕获XMLSyntaxError
我有以下python+lxml代码:Python没有捕获XMLSyntaxError,python,exception,lxml,Python,Exception,Lxml,我有以下python+lxml代码: def doXMLValidation (xml_file, schema_file): '''Validates xml file against schema''' s_doc = etree.parse (schema_file) schema = etree.XMLSchema (s_doc) x_file = etree.parse(xml_file) try: schema.assertV
def doXMLValidation (xml_file, schema_file):
'''Validates xml file against schema'''
s_doc = etree.parse (schema_file)
schema = etree.XMLSchema (s_doc)
x_file = etree.parse(xml_file)
try:
schema.assertValid(x_file)
except etree.XMLSyntaxError as e:
print (_formatXMLError(e))
return False
except etree.DocumentInvalid as e:
print (_formatXMLError(e))
return False
except:
print ('Something strange...')
return False
else:
return True
当我试图用一个损坏的xml/fb2文件(标记已删除)测试它时,我希望通过正确的处理得到XMLSyntaxError异常。但是,相反,我得到了一个带有该错误的崩溃:
...metadata/.plugins/org.python.pydev.debug/.coverage
回溯(最近一次呼叫最后一次):文件 “../.eclipse/org.eclipse.platform_3.5.0_155965261/plugins/org.python.pydev.debug_1.5.9.2010063001/pysrc/coverage.py”, 第1029行,在 覆盖率命令行(sys.argv[1:]) 文件 “../.eclipse/org.eclipse.platform_3.5.0_155965261/plugins/org.python.pydev.debug_1.5.9.2010063001/pysrc/coverage.py”, 第405行,在命令行中 execfile(sys.argv[0],main\u dict\u)文件“./workspace/pythonpracce/src/lxmlvalization.py”, 第58行,输入 test()文件“./workspace/pythonpracce/src/lxmlvalization.py”, 第54行,正在测试中 结果=doxmlvalization(源,架构)文件 “./workspace/pythonpracce/src/lxmlvalization.py”, 第31行,在doxmlvalization中 x_file=etree.parse(xml_文件)文件“lxml.etree.pyx”,第2692行,在 lxml.etree.parse (src/lxml/lxml.etree.c:49594)文件 “parser.pxi”,第1500行,在 lxml.etree.\u解析文档 (src/lxml/lxml.etree.c:71364)文件 “parser.pxi”,第1529行,在 lxml.etree.\u parseDocumentFromURL (src/lxml/lxml.etree.c:71647)文件 “parser.pxi”,第1429行,在 lxml.etree.\u parseDocFromFile (src/lxml/lxml.etree.c:70742)文件 “parser.pxi”,第975行,在 lxml.etree.\u BaseParser.\u parseDocFromFile (src/lxml/lxml.etree.c:67740)文件 “parser.pxi”,第539行,在 lxml.etree.\u ParserContext.\u handleParseResultDoc (src/lxml/lxml.etree.c:63824)文件 “parser.pxi”,第625行,在 lxml.etree.\u handleParseResult (src/lxml/lxml.etree.c:64745)文件 “parser.pxi”,第565行,在 lxml.etree.\u raiseParserError (src/lxml/lxml.etree.c:64088) lxml.etree.xmlsyntaxer错误:开头和结尾标记不匹配:a第7行和p第7行第46列 问题可能是什么?如何解决 UPD:哈哈,明白了,谢谢大家:
def doXMLValidation (xml_file, schema_file):
'''Validates xml file against schema'''
s_doc = etree.parse (schema_file)
schema = etree.XMLSchema (s_doc)
try:
x_file = etree.parse(xml_file)
schema.assertValid(x_file)
except etree.XMLSyntaxError as e:
print (_formatXMLError(e))
return False
except etree.DocumentInvalid as e:
print (_formatXMLError(e))
return False
except:
print ('Something strange...')
return False
else:
return True
我认为lxml在解析时会更容易理解…在导致错误的语句出现之前,您不必进行尝试。请更仔细地查看堆栈跟踪。再次在此-如果您有其他信息,请编辑您的答案。一句评论并不是为了达到目的this@EliBendersky,请给我发邮件到unternet.net的jc。谢谢,当然可以。OP采纳了我的建议,解决了他的问题。