Duvida com Arquivo XML e Classe JDOM!

3 respostas
jeloy

Bom dia pessoal!

estou tentando fazer meu programa ler um xml de NFe, e retornar o texto das Tags que eu quero, usando a classe JDOM.

está tudo certo, ele está lendo tudo bonitinho e etc, ainda pego os dados e insiro num objeto NFe e etalz…

o problema é que eu estou buscando esses dados através de lista… ex:

List NóPrincipal = principal.getChildren();

Element segundoNó = Nóprincipal.get(0);

List segundoNó = segundoNó.getChidren();

Element terceiroNó = segundoNó.get(2);

//e assim por diante

o problema é que fui testar com NFe de outra empresa e deu erro…reparei que a estrutura muda! pensei que o xml seguisse o mesmo padrão…

alguem tem alguma sugestão de como resolver meu problema?

pensei em tentar buscar as informaçoes pelo nome da TAG por ex:

Element xNome = .getchild("xNome");

segue abaixo a minha class que lê o xml

SAXBuilder sb = new SAXBuilder();

        Document xml = sb.build(nf);

        Element rootNode = xml.getRootElement();
        List listRootNode = rootNode.getChildren();

        Element protNfeNode = (Element) listRootNode.get(1);
        List listProtNfeNode = protNfeNode.getChildren();

        Element infProtNode = (Element) listProtNfeNode.get(0);
        List listInfProtNode = infProtNode.getChildren();

            Element chNFe = (Element) listInfProtNode.get(2);

        Element nfeNode = (Element) listRootNode.get(0);
        List listNfeNode = nfeNode.getChildren();

        Element infNfeNode = (Element) listNfeNode.get(0);
        
        List listInfNfeNode = infNfeNode.getChildren();

        Element ideNode = (Element) listInfNfeNode.get(0);
        List listIdeNode = ideNode.getChildren();

            Element cNF = (Element) listIdeNode.get(1);
            Element dEmi = (Element) listIdeNode.get(7);
            Element serie = (Element) listIdeNode.get(5);

        Element emitNode = (Element) listInfNfeNode.get(1);
        List listEmitNode = emitNode.getChildren();

            Element cnpjEmit = (Element) listEmitNode.get(0);
            Element xnomeEmit = (Element) listEmitNode.get(1);

        Element destNode = (Element) listInfNfeNode.get(2);
        List listDestNode = destNode.getChildren();

            Element cnpjDest = (Element) listDestNode.get(0);
            Element xnomeDest = (Element) listDestNode.get(1);




      NFe nfe = new NFe();
      int codNfe = Integer.parseInt(cNF.getText());
      nfe.setCodNF(codNfe);
      
      
      nfe.setCnpjEmitente(cnpjEmit.getText());
      nfe.setNomeEmitente(xnomeEmit.getText());
      nfe.setCnpjDestinatario(cnpjDest.getText());
      nfe.setNomeDestinatario(xnomeDest.getText());
      nfe.setChaveDeAcesso(chNFe.getText());
      int serial = Integer.parseInt(serie.getText());
      nfe.setSerie(serial);

3 Respostas

pedruhenrik

teoricamente os xml’s da NFe seguem o padrão estabelecido pela sefaz…estranho né? rsrs

já olhou no site da sefaz?

att,

jeloy

pedruhenrik:
teoricamente os xml’s da NFe seguem o padrão estabelecido pela sefaz…estranho né? rsrs

já olhou no site da sefaz?

att,

entao…

andei pesquisando…

pelo que vi ± as tags nem todas são obrigatórias ter…e em relação a estrutura me disseram que pode mudar um campo ou outro…mto estranho

vou dar uma olhada no site do sefaz

jeloy

up

Criado 27 de janeiro de 2011
Ultima resposta 28 de jan. de 2011
Respostas 3
Participantes 2