# HG changeset patch # User Paul Boddie # Date 1219959664 -7200 # Node ID ffaf027ed4713c22ce33707d0f76e23f35420975 # Parent e1e59e85f84180c5772437b1cc491edbcb6178b0 Improved error reporting, adding messages for non-validation errors. diff -r e1e59e85f841 -r ffaf027ed471 libxml2dom/macrolib/macrolib.py --- a/libxml2dom/macrolib/macrolib.py Thu Aug 28 23:35:07 2008 +0200 +++ b/libxml2dom/macrolib/macrolib.py Thu Aug 28 23:41:04 2008 +0200 @@ -606,23 +606,23 @@ # NOTE: May not be the correct exception. - error = libxml2mod.xmlGetLastError() - if error is not None: - filename = libxml2mod.xmlErrorGetFile(error) - line = libxml2mod.xmlErrorGetLine(error) - error_message = libxml2mod.xmlErrorGetMessage(error).strip() - message = "Filename %r, line %d: %s" % (filename, line, error_message) - else: - message = "Document did not validate" - - raise LSException(LSException.PARSE_ERR, - DOMError(DOMError.SEVERITY_FATAL_ERROR, message)) + raise LSException( + LSException.PARSE_ERR, + DOMError( + DOMError.SEVERITY_FATAL_ERROR, + get_parse_error_message() or "Document did not validate" + )) elif unfinished or Parser_well_formed(context): return doc + else: - raise LSException(LSException.PARSE_ERR, - DOMError(DOMError.SEVERITY_FATAL_ERROR, "Document not well-formed")) + raise LSException( + LSException.PARSE_ERR, + DOMError( + DOMError.SEVERITY_FATAL_ERROR, + get_parse_error_message() or "Document not well-formed" + )) def toString(node, encoding=None, prettyprint=0): return libxml2mod.serializeNode(node, encoding, prettyprint) @@ -661,6 +661,20 @@ else: return 0 +def get_parse_error_message(): + error = libxml2mod.xmlGetLastError() + if error is not None: + filename = libxml2mod.xmlErrorGetFile(error) + if filename is None: + filename = "" + else: + filename = repr(filename) + line = libxml2mod.xmlErrorGetLine(error) + error_message = libxml2mod.xmlErrorGetMessage(error).strip() + return "Filename %s, line %d: %s" % (filename, line, error_message) + else: + return None + def Parser_push(): return libxml2mod.xmlCreatePushParser(None, "", 0, None)