Lêr XML NF-e

Bom dia,

Estou utilizando JDOM para lêr os dados do XML da NF-e, porem me deparei com um problema. Existe versão de NF-e 1.10 e 2.00, ou seja, o XML muda, e também tem alguns XML que tem o NFeProc e outros não tem.

O que vocês fazem para se livrar desse tipo de problema?

Obrigado desde já.

quanto ao fato de não ter a Tag, não vejo problema, afinal o xml e extensivo.

O meu problema é o seguinte, tem XML que nem esse abaixo:

<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10"><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe42101108436395000181550070000012783800601536" versao="1.10">

E tem que nem esse:

<?xml version="1.0" encoding="UTF-8"?><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe42101008436395000181550070000010861677482008" versao="2.00">

E quero pegar os elementos que tem no infNFe, que no caso são o ide, dest, emit, etc…

Assim que eu pego os valores:

Document d = sb.build(f);   
               
            Element nfe = d.getRootElement();   
                                    
            Namespace ns = Namespace.getNamespace("http://www.portalfiscal.inf.br/nfe");            
     
            Element infNFe = (Element) nfe.getChild("infNFe", ns);

Desse jeito só funciona no segundo XML, no primeiro ele retorna nulo…

Alguem sabe o que eu posso fazer? Vlw…

Só exemplificando… Queria pegar tudo que está dentro do infNFe, não importa o que o antecede.

Obrigado.

Amigo, para pegar a chave de acesso, eu descartei o uso de Api’s de XML, criei um parser de texto mesmo, e o processo esta com bom desempenho.
Se você quer apenas este campo tenta parsear o texto puro, caso queira usar JDOM, faça um condicional na leitura, caso retorne null aplique o outro método.

Amigo, para pegar a chave de acesso, eu descartei o uso de Api’s de XML, criei um parser de texto mesmo, e o processo esta com bom desempenho.
Se você quer apenas este campo tenta parsear o texto puro, caso queira usar JDOM, faça um condicional na leitura, caso retorne null aplique o outro método.

Usei o DOM e funcionou que é uma beleza :P.

Obrigado a todos…

Olá gismo.

Também estou tendo problemas para parsear o xml da Nfe.

Você poderia me dar um caminho de como você fez isso?
Porque eu também tentei com DOM e não consegui, testei tbm com JDOM e tenho erros.
Poderia me dar uma luz?

Valeu

Tente utilizar JColtrane, achei bem facil de usar.

Inicialmente eu o estava utilizando, porem como eu parseava grandes lostes de NFe, eu estava tendo problemas com XMl’s mal formados, dai fui na unha mesmo.

Link do JColtrane : http://jcoltrane.sourceforge.net/

Cara, consegui resolver o meu problema usando o XMLBeans. Eu executo um comando passando o schema na NFE e informo um caminho, então o xmlbeans me gera um jar com as classes para acessar direto, por exemplo eu só faço isso:

XmlProcDocument proc = new XmlProcDocument.Factory.parse(new File("nfe.xml"));
proc.getNFe().getInfNfe()....

Muito fácil mesmo, ele já gera todos os objetos.

Criei este pequeno tutorial no meu site que pode ser usado como referência.
http://robsonp.com/01/2011/xml-com-xmlbeans/