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);