From 36620ffe52799e0fb71aa001b59b28052fbb6eac Mon Sep 17 00:00:00 2001 From: Italo Maia Date: Thu, 21 Jan 2010 01:08:10 -0300 Subject: [PATCH] =?UTF-8?q?alterada=20assinatura=20para=20permitir=20desco?= =?UTF-8?q?brir=20o=20motivo=20da=20falha=20na=20valida=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynfe/processamento/validacao.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/pynfe/processamento/validacao.py b/pynfe/processamento/validacao.py index eedb992..0520761 100644 --- a/pynfe/processamento/validacao.py +++ b/pynfe/processamento/validacao.py @@ -46,19 +46,22 @@ class Validacao(object): def clear_cache(self): self.MEM_CACHE = {} - def validar_xml(self, xml_path, xsd_file): + def validar_xml(self, xml_path, xsd_file, guess_error=False): '''Valida um arquivo xml. Argumentos: xml_filepath - caminho para arquivo xml xsd_file - caminho para o arquivo xsd + guess_error - levantar exceção caso documento não valide? ''' - return self.validar_etree(etree.parse(xml_path), xsd_file) + return self.validar_etree(etree.parse(xml_path), xsd_file, + guess_error=guess_error) - def validar_etree(self, xml_doc, xsd_file): + def validar_etree(self, xml_doc, xsd_file, guess_error=False): '''Valida um documento lxml diretamente. Argumentos: xml_doc - documento etree xsd_file - caminho para o arquivo xsd + guess_error - levantar exceção caso documento não valide? ''' xsd_filepath = get_xsd(xsd_file) @@ -70,4 +73,14 @@ class Validacao(object): xsd_doc = etree.parse(xsd_filepath) xsd_schema = etree.XMLSchema(xsd_doc) self.MEM_CACHE[xsd_file] = xsd_schema - return xsd_schema.validate(xml_doc) + return self._validar(xsd_schema, xml_doc, guess_error) + + def _validar(self, xsd_schema, xml_doc, use_assert=False): + """Checa se um documento eh valido, podendo jogar exceção caso não seja. + Argumentos + xsd_schema - documento schema usado na validacao + xml_doc - documento xml a ser validado + use_assert - gerar exceção com o erro caso o documento seja inválido? + """ + return use_assert and xsd_schema.assertValid(xml_doc) \ + or xsd_schema.validate(xml_doc)