Pessoal estava com um problema para ler um xml de uma NFe, o problema era por causa do NameSpace, o famoso atributo xmlns, depois de ralar bastante consegui ler o bendito arquivo com sucesso utilizando o JDOM. Segue o código:
package arquivos;
import java.io.File;
import javax.swing.JOptionPane;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
/*
- Desenvolvido por Fabiano Costa de Alvarenga.
- Esta classe recupera dados de um XML de NF-e.
*/
public class LeitorXML {
private SAXBuilder sb;
private Document d;
public LeitorXML(String arquivo) {
// TODO Auto-generated constructor stub
try {
sb = new SAXBuilder();
d = sb.build(new File(arquivo));
} catch (Exception e) {
// TODO: handle exception
JOptionPane.showMessageDialog(null, "Exceção ao processar arquivo! "+e.getMessage());
}
}
public String getEmailNFe() {
try {
[color=blue]// AQUI ESTÁ O MAIOR SEGREDO
XPath xPath = XPath.newInstance("//k:nfeProc/k:NFe/k:infNFe/k:dest/k:email");
xPath.addNamespace("k", d.getRootElement().getNamespaceURI());
Element node = (Element) xPath.selectSingleNode(d.getRootElement());
return node.getText();[/color]
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao processar arquivo! "+e.getMessage());
return null;
}
}
public static void main(String[] args) {
LeitorXML buscarDadosEmXML = new LeitorXML("procNfe2.xml");
System.out.println("E-mail Destinatário: "+buscarDadosEmXML.getEmailNFe());
}
}
Dúvidas: fabiano.costa.alvarenga@gmail.com