Problema lendo XML da NFe com JDom

4 respostas
javer
Preciso ler o conteúdo do XML da nota fiscal eletrônica mas não estou conseguindo pegar o "valores" usando o nome do elemento com o JDcom.
SAXBuilder sb = new SAXBuilder();
Document d = sb.build(new StringReader(xml));
Element notas = d.getRootElement();
List elements = notas.getChildren();
Iterator i = elements.iterator();

while (i.hasNext()) {
    Element elemento = (Element) i.next();
    if (elemento.getName().equals("NFe")) {
        List dadosNota = elemento.getChildren();
        Iterator iDados = dadosNota.iterator();
        while (iDados.hasNext()) {
            Element elementoDadoNota = (Element) iDados.next();
            if (elementoDadoNota.getName().equals("infNFe")) {
                System.out.println("Id = " + elementoDadoNota.getAttributeValue("Id"));
                //System.out.println("Nome: " + elementoDadoNota.getName());
                Element infNFe = elementoDadoNota;
                List<Element> dadosInfNFe = infNFe.getChildren();

                Element ide = dadosInfNFe.get(0);
                System.out.println(""+ide.getChildText("mod")); // aqui retorna null mas existe um filho de ide com o nome mod

                List<Element> dadosIde = ide.getChildren();                            
                System.out.println("==== "+dadosIde.get(0).getText()); // aqui aparece certo: 35 (primeiro elemento de ide)

            }
        }
    }
}
Já estou achando horrível esse monte de while e if, não tem um jeito mais fácil? Como faço?

4 Respostas

zoren

eu uso o JAX, com ele eu transformo o xml em objeto e pego os valores que eu quero

javer

Me dá um exemplo, please!

zoren

http://blog.caelum.com.br/2008/02/27/jaxb-xml-e-java-de-maos-dadas/

javer

Muitíssimo obrigado amigo, já estou lendo e é um tutorial muito bom esse.

Criado 16 de novembro de 2009
Ultima resposta 16 de nov. de 2009
Respostas 4
Participantes 2