Duvida com Arquivo XML e Classe JDOM!

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 = nó.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);

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

já olhou no site da sefaz?

att,

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

já olhou no site da sefaz?

att,[/quote]

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

up