Gostaria de saber qual a melhor forma de extrair a lista de produtos (apenas código e quantidade) de um XML de uma NF-e, salvando cada item da lista em um novo objeto.
pega os schema de nfe, cria um pacote usando o xjc, ai usando jaxb, voce transforma o xml em objetos e em seguida, pega a tag onde estao os produtos e percorre ela num for.
eu ate postei outro dia aqui, o codigo que voce precisa sera parecido com esse, so vai precisar ver qual o objeto que estao os produtos.
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
File diretorio = selecionarArquivoDaColeta(true);
if (diretorio == null) {
JOptionPane.showMessageDialog(this, "Arquivo nao selecionado ou nao encontrado.", "Erro ao selecionar arquivo", JOptionPane.ERROR_MESSAGE);
} else {
long t1 = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
File[] arquivos = diretorio.listFiles();
try {
//Retirei a criacao desses dois objetos do for.
JAXBContext contexto = JAXBContext.newInstance("br.inf.portalfiscal.nfe");
Unmarshaller leituraXML = contexto.createUnmarshaller();
for (File arquivo : arquivos) {
if (!arquivo.getName().contains("caneve")) {
JAXBElement<TNfeProc> objetoXML = (JAXBElement<TNfeProc>) leituraXML.unmarshal(arquivo);
TNfeProc nfe = objetoXML.getValue();
sb.append(nfe.getNFe().getInfNFe().getId().substring(3));
sb.append("\tEMISSAO:\t");
sb.append(LocalDate.parse(nfe.getNFe().getInfNFe().getIde().getDhEmi(), DateTimeFormatter.ISO_OFFSET_DATE_TIME));
sb.append("\r\n");
for (TNFe.InfNFe.Pag.DetPag pag : nfe.getNFe().getInfNFe().getPag().getDetPag()) {
sb.append("PAGAMENDO:\t");
sb.append(pag.getTPag());
sb.append("\tVALOR:\t");
sb.append(pag.getVPag());
sb.append("\r\n");
}
}
}
} catch (JAXBException ex) {
ex.printStackTrace();
}
System.out.println(sb);
}
}
1 curtida
Deu certo, mas mudei o método para retornar o array de objeto. Obrigado.
1 curtida
tranquilo. esse meu foi para somar as notas emitidas, para conferencia com o valor da venda separando por finalizador. mas com esse esquema vc faz tudo na nfe. tando do xml para objeto como do objeto para o xml