Fórum Gerencia arquivos xml #503419
04/12/2014
0
Classe auxiliar para que possa ter as informações listada acima
public class DadosNFe {
@SwingColumn(description = "Numero NFE")
private String doc;
@SwingColumn(description = "Fornecedor")
private String fornecedor;
@SwingColumn(description = "Valor")
private String valor;
private String nomeArquivo;
public DadosNFe() {
}
Classe com os metodos de leitura do xml
public class LerXml {
private File arquivos[];
private File f;
private File diretorio;
private SAXBuilder sb;
private Document d;
private Element nfe;
private Iterator i_atr;
private List atributes;
private List elements;
private DadosNFe dados = new DadosNFe();
private List<Document> nfs = new LinkedList<>();
private List<DadosNFe> listaDados = new LinkedList<>();
private List<String>enderecos = new LinkedList<>();
public LerXml() {
}
public List<DadosNFe> lerXml() {
f = new File("Z://xml fornecedores//XML P IMPORTA//N_21141106498638000180550010000045461001669390_MA_000000048774796_11167282_procNFe.xml");
diretorio = new File("Z://xml fornecedores//XML P IMPORTA");
arquivos = diretorio.listFiles();
dados.setNomeArquivo(f.getName());
sb = new SAXBuilder();
//Este documento agora possui toda a estrutura do arquivo.
try {
for (int i = 0; i < arquivos.length; i++) {
Document d = sb.build(arquivos[i]);
nfs.add(d);
enderecos.add(arquivos[i].toString());
}
JOptionPane.showMessageDialog(null, nfs.size()+" "+enderecos.size());
for (Document doc : nfs) {
Element nfe = doc.getRootElement();
List atributes = nfe.getAttributes();
List elements;
elements = nfe.getChildren();
Iterator i = elements.iterator();
while (i.hasNext()) {
Element element = (Element) i.next();
trataElement(element);
}
}
return listaDados;
} catch (IOException ex) {
// System.out.print("erro "+ex);
JOptionPane.showMessageDialog(null, "Erro :\n" + ex);
// Logger.getLogger(LerXml.class.getName()).log(Level.SEVERE, null, ex);
return null;
} catch (JDOMException ex) {
Logger.getLogger(LerXml.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
private void trataElement(Element element) {
//Recuperamos os atributos filhos (Attributes)
List atributes = element.getAttributes();
Iterator i_atr = atributes.iterator();
//Iteramos com os atributos filhos
while (i_atr.hasNext()) {
Attribute atrib = (Attribute) i_atr.next();
// System.out.println("\nattribute de (" + element.getName() + "):" + atrib.getName() + " - valor: " + atrib.getValue());
}
//Recuperamos os elementos filhos (children)
List elements = element.getChildren();
Iterator it = elements.iterator();
//Iteramos com os elementos filhos, e filhos do dos filhos
while (it.hasNext()) {
Element el = (Element) it.next();
// System.out.println("elemento(" + element.getName() + "):" + el.getName() + " - Valor: " + el.getText());
// aqui voce pode escolher qual(is) campo(s) quer manipular
if (el.getName().equals("vNF")) {
// grava_no_banco de dados(element.getAttributeValue("nNF"));
// System.out.println("encontrou nNF . . . com valor: " + el.getName() +" "+ el.getText());
dados.setValor(el.getText().toString());
}
if (el.getName().equals("xNome") && element.getName().equals("emit")) {
// grava_no_banco de dados(element.getAttributeValue("nNF"));
// System.out.println("encontrou nNF . . . com valor: " + el.getName() + " "+el.getText());
dados.setFornecedor(el.getText());
}
if (el.getName().equals("nNF")) {
// grava_no_banco de dados(element.getAttributeValue("nNF"));
// System.out.println("encontrou nNF . . . com valor: " + el.getName() + el.getText());
dados.setDoc(el.getText().toString());
}
if(dados.getDoc()!=null && dados.getFornecedor()!=null && dados.getValor()!=null ){
listaDados.add(dados);
dados = new DadosNFe();
}
trataElement(el);
}
}
public DadosNFe getDados() {
return dados;
}
public void setDados(DadosNFe dados) {
this.dados = dados;
}
public List<String> getEnderecos() {
return enderecos;
}
public void setEnderecos(List<String> enderecos) {
this.enderecos = enderecos;
}
}
John Lima
Curtir tópico
+ 0Posts
06/12/2014
Ronaldo Lanhellas
Gostei + 0
10/12/2014
John Lima
Gostei + 0
12/12/2014
Ronaldo Lanhellas
Você pode sobreescrever a forma de comparação utilizada, fazendo da forma que você deseja ordenar, veja:
Collections.sort(lista, new Comparator<Aluno>() {@Override
public int compare(Aluno o1, Aluno o2) {
return o1.getNome().toUpperCase().compareTo(o2.getNome().toUpperCase());
}
});
Gostei + 0
12/12/2014
John Lima
imagem do sistema carregando alguns arquivos
[img]http://arquivo.devmedia.com.br/forum/imagem/316453-20141212-111831.jpg[/img]
Imagem da lista com todos os arquivos
[img]http://arquivo.devmedia.com.br/forum/imagem/316453-20141212-111724.jpg[/img]
o outro sistema é de terceiros e ele carrega as informações corretas, já o que eu fiz quando mando gera tudo ele carrega as informações de alguns arquivos errado
Gostei + 0
17/12/2014
Ronaldo Lanhellas
Gostei + 0
18/12/2014
John Lima
public class DadosNFe implements Comparable<DadosNFe> {
@SwingColumn(description = "Numero NFE")
private String doc;
@SwingColumn(description = "Data Emissao")
private String data;
@SwingColumn(description = "Fornecedor")
private String fornecedor;
@SwingColumn(description = "Valor")
private String valor;
@SwingColumn(description = "Arquivo")
private String nomeArquivo;
public DadosNFe() {
}
public String getFornecedor() {
return fornecedor;
}
public void setFornecedor(String fornecedor) {
this.fornecedor = fornecedor;
}
public String getDoc() {
return doc;
}
public void setDoc(String doc) {
this.doc = doc;
}
public String getValor() {
return valor;
}
public void setValor(String valor) {
this.valor = valor;
}
public String getNomeArquivo() {
return nomeArquivo;
}
public void setNomeArquivo(String nomeArquivo) {
this.nomeArquivo = nomeArquivo;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public int compareTo(DadosNFe o) {
return Collator.getInstance().compare(this.data, o.data);
}
@Override
public int hashCode() {
int hash = 5;
hash = 13 * hash + Objects.hashCode(this.doc);
hash = 13 * hash + Objects.hashCode(this.data);
hash = 13 * hash + Objects.hashCode(this.fornecedor);
hash = 13 * hash + Objects.hashCode(this.valor);
hash = 13 * hash + Objects.hashCode(this.nomeArquivo);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final DadosNFe other = (DadosNFe) obj;
if (!Objects.equals(this.doc, other.doc)) {
return false;
}
if (!Objects.equals(this.data, other.data)) {
return false;
}
if (!Objects.equals(this.fornecedor, other.fornecedor)) {
return false;
}
if (!Objects.equals(this.valor, other.valor)) {
return false;
}
if (!Objects.equals(this.nomeArquivo, other.nomeArquivo)) {
return false;
}
return true;
}
cod de ordenação :
Collections.sort(lista, new Comparator<DadosNFe>() {@Override
public int compare(DadosNFe o1, DadosNFe o2) {
return o1.getData().compareTo(o2.getData() );
}
});
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)