[PATCH] Checa se o elemento existe
Thadeu Lima de Souza Cascardo
cascardo en cascardo.info
Mar Jul 16 12:01:29 UTC 2013
On Sun, Jul 07, 2013 at 10:26:52AM -0300, camponez en gmail.com wrote:
> From: Eduardo Elias Camponez <camponez en gmail.com>
>
> Signed-off-by: Eduardo Elias Camponez <camponez en gmail.com>
> ---
> src/contribuinte.py | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/contribuinte.py b/src/contribuinte.py
> index 80c17c0..46d2a7b 100644
> --- a/src/contribuinte.py
> +++ b/src/contribuinte.py
> @@ -45,7 +45,7 @@ class Contribuinte:
> cpf = self._normalize_cpf(self.cpf)
> self.declaracoes = xml.dom.minidom.parse(self.iddecl_file)
> for i in self.declaracoes.childNodes[0].childNodes:
> - if "cpf" in i.attributes.keys():
> + if i.attributes and "cpf" in i.attributes.keys():
> if i.attributes["cpf"].nodeValue == cpf:
> return i
> return None
> --
> 1.8.1.2
>
> _______________________________________________
> Softwares-impostos mailing list
> Softwares-impostos en fsfla.org
> http://www.fsfla.org/cgi-bin/mailman/listinfo/softwares-impostos
O problema real é que alguns nós filhos podem não ser elementos, mas
texto, como espaço. Avaliando o seu problema real, este patch não o
resolve, fazendo a função retornar None.
Dá uma olhada no commit abaixo. Aplico com o seu Ack.
---
From: Thadeu Lima de Souza Cascardo <cascardo en cascardo.info>
Date: Tue, 16 Jul 2013 08:55:08 -0300
Subject: [PATCH] =?UTF-8?q?Obt=C3=A9m=20elementos=20pelo=20nome=20da=20tag?=
=?UTF-8?q?.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ao invés de assumir que os nós são apenas elementos, e não podem ser
texto, busca por elementos com a tag. O teste do contribuinte passa a
funcionar após esse patch.
---
src/contribuinte.py | 2 +-
src/municipios.py | 2 +-
src/ocupacoes.py | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/contribuinte.py b/src/contribuinte.py
index a9e055b..f477d0a 100644
--- a/src/contribuinte.py
+++ b/src/contribuinte.py
@@ -44,7 +44,7 @@ class Contribuinte:
def _find_id(self):
cpf = self._normalize_cpf(self.cpf)
self.declaracoes = xml.dom.minidom.parse(self.iddecl_file)
- for i in self.declaracoes.childNodes[0].childNodes:
+ for i in self.declaracoes.getElementsByTagName("item"):
if "cpf" in i.attributes.keys():
if i.attributes["cpf"].nodeValue == cpf:
return i
diff --git a/src/municipios.py b/src/municipios.py
index 733b8fe..c9cd47a 100644
--- a/src/municipios.py
+++ b/src/municipios.py
@@ -23,7 +23,7 @@ class Municipios:
self.l = []
def _list(self):
- for i in self.xml.childNodes[0].childNodes:
+ for i in self.xml.getElementsByTagName("ITEM"):
if "COL3" in i.attributes.keys():
self.l.append((i.attributes["COL1"].nodeValue, \
i.attributes["COL2"].nodeValue, \
diff --git a/src/ocupacoes.py b/src/ocupacoes.py
index 87b9f32..755d070 100644
--- a/src/ocupacoes.py
+++ b/src/ocupacoes.py
@@ -28,7 +28,7 @@ class Ocupacoes:
self._group()
def _list(self):
- for i in self.xml.childNodes[0].childNodes:
+ for i in self.xml.getElementsByTagName("ITEM"):
if "COL4" in i.attributes.keys():
self.l.append((i.attributes["COL1"].nodeValue, \
i.attributes["COL2"].nodeValue, \
--
1.8.1.4
Más información sobre la lista de distribución Softwares-impostos