Leitura de NFe

951 views
Skip to first unread message

Marcelo Maia

unread,
Dec 4, 2013, 3:15:27 PM12/4/13
to python...@googlegroups.com
Olá Senhores!

Quero ler um XML e a partir dele pegar os itens que nele estão para dar entrada no estoque.

Consigo pegar a o root através do guia http://docs.python.org/2/library/xml.etree.elementtree.html

import xml.etree.ElementTree as ET
tree = ET.parse('xmldeentrada.xml')
root = tree.getroot()

só que só consigo navegar nos filhos da raiz através de índices, como por exemplo,

root[0][0][1],

Gostaria de saber se tem uma forma mais eficiente de navegar nos filhos como por exemplo passar somente as tags para busca

por exemplo

root['emit']['CNPJ']  (cnpj do emissor)


ou

root.emit.CNPJ.text (outra possibilidade)

Fico no aguardo! Obrigado!


Att,

Marcelo Maia

Fabio C. Barrionuevo da Luz

unread,
Dec 4, 2013, 3:23:17 PM12/4/13
to python...@googlegroups.com
Marcelo, da uma olhada no PyNFe [1] ou [2] PySPED-NFe. Pode ser mais simples e melhor testado que fazer tudo na mão.
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Fábio C. Barrionuevo da Luz
Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins - FACTO
Palmas - Tocantins - Brasil - América do Sul

Bruno Rocha

unread,
Dec 4, 2013, 7:41:45 PM12/4/13
to python...@googlegroups.com

2013/12/4 Marcelo Maia <mmai...@gmail.com>

import xml.etree.ElementTree as ET tree = ET.parse('xmldeentrada.xml') root = tree.getroot()

usando o Element Tree você pode utilizar XPATH para navegar no xml.

import xml.etree.ElementTree as ET
tree = ET.parse('xmldeentrada.xml')
root = tree.getroot()
for item in root.findall('./Item'):  # aqui vai no nome do node, tipo se for product seria './product'
    price = item.find('./price').text

Ai vc tem que dar uma olhada direitinho no XPATH que vai precisar, dá uma lida na doc do Etree e pesquisa sobre Xpath.


Outra opção seria usar o xmltodict para converter o XML para um dict e navegar pelas chaves, fiz um post a respeito: http://brunorocha.org/python/django/xmltodict-python-module-that-makes-working-with-xml-feel-like-you-are-working-with-json.html


--

Vinicius Assef

unread,
Dec 4, 2013, 8:13:21 PM12/4/13
to python...@googlegroups.com
2013/12/4 Marcelo Maia <mmai...@gmail.com>:
> ...
> Gostaria de saber se tem uma forma mais eficiente de navegar nos filhos como
> por exemplo passar somente as tags para busca
>
> por exemplo
>
> root['emit']['CNPJ'] (cnpj do emissor)

Use o xmltodict. Ele faz exatamente isso.

Marcelo Maia

unread,
Dec 5, 2013, 11:35:29 AM12/5/13
to python...@googlegroups.com
Obrigado pela dica pessoal!
:)
hoje resolvi com minidon, vou testar com esse xmltodic :)
Reply all
Reply to author
Forward
0 new messages