2011-04-10 3 views
0

잡기되지 않은 I 다음 파이썬 + lxml이 코드를 가지고 :파이썬은 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이 더 기분 좋은 것 ...

답변

1

이 오류의 원인이 문 앞에 시도가 없습니다. stacktrace를 더 조심스럽게 살펴보십시오.

+0

힌트 : 31 번째 줄은 여기 다시 –

+1

입니다. 추가 정보가 있으면 답을 수정하십시오. 코멘트는 이것을 이루기위한 것이 아니 었습니다 –

+0

@Eli Bendersky, unternet dot net에서 jc로 이메일을 보내주십시오. 감사. –