I have a problem. I have 3 For's, one inside the other,
Within the second For I make the instance of my object and soon after I pass the data from an xml file that I read to that object and at the end I add everything to a List<MeuObjeto>
.
But in the third FOR I needed to instantiate my object again, because when I pass the data to the object it only stores the first element. Here is a snippet of code:
for (int y = 0; y < tagdadosGuia.getLength(); y++) {
NodeList tagBeneficiario0 = ((Element) tagdadosGuia.item(y)).getElementsByTagName("unimed:beneficiario");
NodeList tagProcedimentos = ((Element) tagdadosGuia.item(y)).getElementsByTagName("unimed:procedimentos");
NodeList tagProcedimentos1 = ((Element) tagProcedimentos.item(0)).getElementsByTagName("unimed:dadosProcedimento");
NodeList tagProcedimento = ((Element) tagProcedimentos1.item(0)).getElementsByTagName("unimed:procedimento");
Element elementoBeneficiariox = (Element) tagBeneficiario0.item(0);
String name = pegaTag(elementoBeneficiariox, "unimed:nomeBeneficiario");
String nome = null;
for (int a = 0; a < tagProcedimentos1.getLength(); a++) {
UnimedLote contato = new UnimedLote();
contato.setNumLote(lote);
nome = name;
System.err.println("Nomes: " + nome);
contato.setNomeBeneficiario(nome);
Element elementoBeneficiario12 = (Element) tagProcedimentos1.item(a);
String tot = pegaTag(elementoBeneficiario12, "unimed:valorInformado");
if (tot
== null) {
tot = "0";
}
BigDecimal vt = new BigDecimal(tot).setScale(2);
contato.setValorTotalInformado(vt);
/*Beneficiarios*/
Element elementoBeneficiario0 = (Element) tagBeneficiario0.item(0);
beneficiariosLote.add(pegaTag(elementoBeneficiario0, "unimed:numeroCarteira"));
contato.setCodigo(pegaTag(elementoBeneficiario0, "unimed:numeroCarteira"));
/*Dados das Guias*/
Element elementoBeneficiario1 = (Element) tagdadosGuia.item(y);
beneficiariosLote.add(pegaTag(elementoBeneficiario1, "unimed:numeroGuiaOperadora"));
contato.setNumeroDocumento(pegaTag(elementoBeneficiario1, "unimed:numeroGuiaOperadora"));
Element elementoBeneficiario2 = (Element) tagdadosGuia.item(y);
beneficiariosLote.add(pegaTag(elementoBeneficiario2, "unimed:valorProcessadoGuia"));
Element elementoBeneficiario3 = (Element) tagdadosGuia.item(y);
beneficiariosLote.add(pegaTag(elementoBeneficiario3, "unimed:valorLiberadoGuia"));
Element elementoBeneficiario03 = (Element) tagdadosGuia.item(y);
String valorGlosa = (pegaTag(elementoBeneficiario03, "unimed:valorGlosaGuia"));
contato.setTipoGlosa(valorGlosa);
/*Dados das Guias*/
/*Procedimentos*/
Element elementoBeneficiario4 = (Element) tagProcedimentos1.item(a);
beneficiariosLote.add(pegaTag(elementoBeneficiario4, "unimed:valorProcessado"));
Element elementoBeneficiario5 = (Element) tagProcedimentos1.item(a);
beneficiariosLote.add(pegaTag(elementoBeneficiario5, "unimed:dataProcedimento"));
//contato.setData(pegaTag(elementoBeneficiario5, "unimed:dataProcedimento"));
String d = pegaTag(elementoBeneficiario5, "unimed:dataProcedimento");
//Primeiro converte de String para Date
DateFormat formatUS = new SimpleDateFormat("yyyy-mm-dd");
Date date = null;
try {
date = formatUS.parse(d);
} catch (ParseException ex) {
Logger.getLogger(LeitorXml1.class.getName()).log(Level.SEVERE, null, ex);
}
//Depois formata data
DateFormat formatBR = new SimpleDateFormat("dd-mm-yyyy");
String dateFormated = formatBR.format(date);
contato.setData(dateFormated);
for (int b = 0; b < tagProcedimento.getLength(); b++) {
//Procedimento(tag que fica dentro de procedimentos)!!
Element elementoBeneficiario6 = (Element) tagProcedimento.item(0);
beneficiariosLote.add(pegaTag(elementoBeneficiario6, "unimed:codigo"));
contato.setProcedimento(pegaTag(elementoBeneficiario6, "unimed:codigo"));
Element elementoBeneficiario7 = (Element) tagProcedimento.item(0);
beneficiariosLote.add(pegaTag(elementoBeneficiario7, "unimed:descricao"));
contato.setDescricaoProced(pegaTag(elementoBeneficiario7, "unimed:descricao"));
//Procedimento(tag que fica dentro de procedimentos)!!
listaLote.add(contato);
}
Update:
In the Image the description is Syringe ... It is repeated for others because it is the first data of the xml file, I can only get all the data when I instantiate the object inside the FOR
If you want to check the .xml snippet, you are here:
<unimed:procedimentos>
<unimed:dadosProcedimento>
<unimed:seqLote>2</unimed:seqLote>
<unimed:seqGuia>2</unimed:seqGuia>
<unimed:seqProc>1</unimed:seqProc>
<unimed:procedimento>
<unimed:codigo>22222</unimed:codigo>
<unimed:tipoTabela>19</unimed:tipoTabela>
<unimed:descricao>SERINGA S/AG.20ML LUER SLIP PLASTIP</unimed:descricao>
</unimed:procedimento>
<unimed:quantidadeExecutada>3</unimed:quantidadeExecutada>
<unimed:valorProcessado>4.53</unimed:valorProcessado>
<unimed:valorLiberado>4.53</unimed:valorLiberado>
<unimed:dataProcedimento>2015-03-26</unimed:dataProcedimento>
<unimed:valorFilme>0</unimed:valorFilme>
<unimed:valorServico>4.5300</unimed:valorServico>
<unimed:valorHonorario>0</unimed:valorHonorario>
<unimed:numAutorizacao>4111421</unimed:numAutorizacao>
<unimed:prestadorExecutante>44444</unimed:prestadorExecutante>
<unimed:valorInformado>4.5300</unimed:valorInformado>
</unimed:dadosProcedimento>
<unimed:dadosProcedimento>
<unimed:seqLote>2</unimed:seqLote>
<unimed:seqGuia>2</unimed:seqGuia>
<unimed:seqProc>2</unimed:seqProc>
<unimed:procedimento>
<unimed:codigo>333333</unimed:codigo>
<unimed:tipoTabela>19</unimed:tipoTabela>
<unimed:descricao>SCALP NR.27G MEDSCALP EMB.PLAST.</unimed:descricao>
</unimed:procedimento>
<unimed:quantidadeExecutada>1</unimed:quantidadeExecutada>
<unimed:valorProcessado>2.58</unimed:valorProcessado>
<unimed:valorLiberado>2.58</unimed:valorLiberado>
<unimed:dataProcedimento>2015-03-26</unimed:dataProcedimento>
<unimed:valorFilme>0</unimed:valorFilme>
<unimed:valorServico>2.5800</unimed:valorServico>
<unimed:valorHonorario>0</unimed:valorHonorario>
<unimed:numAutorizacao>4444444</unimed:numAutorizacao>
<unimed:prestadorExecutante>4444444</unimed:prestadorExecutante>
<unimed:valorInformado>2.5800</unimed:valorInformado>
</unimed:dadosProcedimento>
<unimed:dadosProcedimento>
<unimed:seqLote>2</unimed:seqLote>
<unimed:seqGuia>2</unimed:seqGuia>
<unimed:seqProc>3</unimed:seqProc>
<unimed:procedimento>
<unimed:codigo>4444444</unimed:codigo>
<unimed:tipoTabela>19</unimed:tipoTabela>
<unimed:descricao>AGULHA HIPODERMICA 40X12 PRECISIONG</unimed:descricao>
</unimed:procedimento>