Ola,
Eu fiz um codigo bem simples. Um esboço do que eu quero fazer. Porem está extremamente lento. Eu quero abrir um arquivo XML de uma nota fiscal eletronica (NFC-e), e pegar o falor do pagamento. O processo esta funcionando. Porem eu quero fazer isso usando todas as notas emitidas num mes. Estou fazendo um teste com 2200 arquivos. Esta levando mais de meia hora para concluir. O codigo é bem simples, esta logo abaixo, alguem usa alguma outra biblioteca para fazer isso?
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
File diretorio = selecionarArquivo(true);
if (diretorio == null) {
JOptionPane.showMessageDialog(this, "Arquivo nao selecionado ou nao encontrado.", "Erro ao selecionar arquivo", JOptionPane.ERROR_MESSAGE);
} else {
StringBuffer sb = new StringBuffer();
File[] arquivos = diretorio.listFiles();
for (File arquivo : arquivos) {
if (!arquivo.getName().contains("caneve")) {
try {
//daqui
JAXBContext contexto = JAXBContext.newInstance("br.inf.portalfiscal.nfe");
Unmarshaller leituraXML = contexto.createUnmarshaller();
JAXBElement<TNfeProc> objetoXML = (JAXBElement<TNfeProc>) leituraXML.unmarshal(arquivo);
TNfeProc nfe = objetoXML.getValue();
//ate aqui, leva de 2 a 3 segundos por arquivo é o gargalo.
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);
}
}