def _parse(self): try: for i in self._do_parse(): yield i except etree.XMLSyntaxError as ex: # when using .iterparse, the error message does not # contain a file name raise xml.XMLValidationError(ex.message, self.file.name)
def unwrap_validation_error(jpype, runtime_exception, path=None): """Unwraps the nested exception of a runtime exception. Throws either a XMLValidationError or the original Java exception""" ex = runtime_exception.__javaobject__ if type(ex) is jpype.JPackage('org').gem.engine.XMLValidationError: raise xml.XMLValidationError(ex.getCause().getMessage(), path or ex.getFileName()) if type(ex) is jpype.JPackage('org').gem.engine.XMLMismatchError: raise xml.XMLMismatchError(path or ex.getFileName(), ex.getActualTag(), ex.getExpectedTag()) if ex.getCause() and type(ex.getCause()) is \ jpype.JPackage('org').dom4j.DocumentException: raise xml.XMLValidationError(ex.getCause().getMessage(), path) raise runtime_exception
def __init__(self, path): producer.FileProducer.__init__(self, path) nrml_schema = etree.XMLSchema(etree.parse(nrml_schema_file())) self.vuln_model = etree.parse(self.path).getroot() if not nrml_schema.validate(self.vuln_model): raise xml.XMLValidationError( nrml_schema.error_log.last_error, path) model_el = self.vuln_model.getchildren()[0] if model_el.tag != "%svulnerabilityModel" % NRML: raise xml.XMLMismatchError( path, 'vulnerabilityModel', str(model_el.tag)[len(NRML):])
def _parse(self): try: for i in self._do_parse(): yield i except etree.XMLSyntaxError as ex: raise xml.XMLValidationError(ex.message, self.file.name)