我有以下蟒蛇+ LXML代碼:Python是不要再追XMLSyntaxError
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 Traceback (most recent call last):
File "../.eclipse/org.eclipse.platform_3.5.0_155965261/plugins/org.python.pydev.debug_1.5.9.2010063001/pysrc/coverage.py", line 1029, in the_coverage.command_line(sys.argv[1:]) File "../.eclipse/org.eclipse.platform_3.5.0_155965261/plugins/org.python.pydev.debug_1.5.9.2010063001/pysrc/coverage.py", line 405, in command_line execfile(sys.argv[0], main._dict_) File "../workspace/PythonPractice/src/lxmlValidation.py", line 58, in test() File "../workspace/PythonPractice/src/lxmlValidation.py", line 54, in test result = doXMLValidation (source, schema) File "../workspace/PythonPractice/src/lxmlValidation.py", line 31, in doXMLValidation x_file = etree.parse(xml_file) File "lxml.etree.pyx", line 2692, in lxml.etree.parse (src/lxml/lxml.etree.c:49594) File "parser.pxi", line 1500, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:71364) File "parser.pxi", line 1529, in lxml.etree._parseDocumentFromURL (src/lxml/lxml.etree.c:71647) File "parser.pxi", line 1429, in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:70742) File "parser.pxi", line 975, in lxml.etree._BaseParser._parseDocFromFile (src/lxml/lxml.etree.c:67740) File "parser.pxi", line 539, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:63824) File "parser.pxi", line 625, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:64745) File "parser.pxi", line 565, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:64088) lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: a line 7 and p, line 7, column 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會更愉快......
提示:第31行是再次出現 – 2011-04-10 06:04:03
的問題 - 如果您有其他信息,請編輯您的答案。評論並不意味着要完成這個 – 2011-04-10 06:21:07
@Eli Bendersky,請在jc上給我發電子郵件,我在unnetnet dot net。謝謝。 – 2011-04-10 06:27:17