boa noite ou bom dia dependendo do ponto de vista…
galera gostaria de saber pq o ipi nao esta sendo inserido na mesma linha dos demais itens da lista tenho o seguinte codigo
package daos;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.w3c.dom.ls.LSInput;
import dtoBeans.BeanProdutosXML;
public class LeitorXML {
// lista de
public Collection<BeanProdutosXML> conversorMXl(String fileInput) {
Collection<BeanProdutosXML> listaRetornada= new ArrayList<BeanProdutosXML>();
// Caminho do arquivo xml a ser lido recebido por paramentro
File file = new File(fileInput);
// Criamos uma classe SAXBuilder que vai processar o XML
SAXBuilder sb = new SAXBuilder();
// Este documento agora possui toda a estrutura do arquivo.
Document d;
try {
d = sb.build(file);
// Recuperamos o elemento root
Element nfe = d.getRootElement();
// Recuperamos os atributos filhos (Attributes)
List atributes = nfe.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 (" + nfe.getName() + "):"
+ atrib.getName() + " - valor: " + atrib.getValue());
}
// Recuperamos os elementos filhos (children)
List elements = nfe.getChildren();
Iterator i = elements.iterator();
// Iteramos com os elementos filhos, e filhos do dos filhos
while (i.hasNext()) {
Element element = (Element) i.next();
System.out.println("element:"+ element.getName());
trataElement(element,listaRetornada);
/* JOptionPane.showMessageDialog(
null,
"teste dos filhos de prod ->" + element.getName()
+ " conteudo da tag xml ->"
+ element.getText());
*/
}
} catch (JDOMException ex) {
Logger.getLogger(LeitorXML.class.getName()).log(Level.SEVERE, null,
ex);
} catch (IOException ex) {
Logger.getLogger(LeitorXML.class.getName()).log(Level.SEVERE, null,
ex);
}
return listaRetornada;
}
private void trataElement(Element element, Collection<BeanProdutosXML> listaRetornada) {
// 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("\n attribute- (" + element.getName()
// + "):atributo do elemento " + atrib.getName()
// + " - valor: " + atrib.getValue());
}
// Recuperamos os elementos filhos (children)
List elements = element.getChildren();
Iterator it = elements.iterator();
// Collection<BeanProdutosXML> lbp = new ArrayList<BeanProdutosXML>();
BeanProdutosXML bp= null;
// Iteramos com os elementos filhos, e filhos do dos filhos
while (it.hasNext()) {
Element el = (Element) it.next();
bp = new BeanProdutosXML();
//System.out.println(" element(" + element.getName() + "):"
// + el.getName() + " - Valor: " + el.getText());
// Produtos pd = new Produtos();
// aqui voce pode escolher qual(is) campo(s) quer manipular
//descricao do item
if ((el.getName().equals("det")) ) {
ListaProdutoEImpostos(el,listaRetornada);
}
//listaRetornada.(lbp);
trataElement(el,listaRetornada);
}
}
public int ListaProdutoEImpostos(Element el, Collection<BeanProdutosXML> listaRetornada){
List elements = el.getChildren();
Iterator it = elements.iterator();
Iterator itP = null;
List elementoProd=null;
// Collection<BeanProdutosXML> lbp = new ArrayList<BeanProdutosXML>();
BeanProdutosXML bp= null;
// Iteramos com os elementos filhos, e filhos do dos filhos
//itera dentro do elemento det
while (it.hasNext()) {
Element ell = (Element) it.next();
bp=new BeanProdutosXML();
System.out.println(" dentro do tsts---------------- element(" + el.getName() + "):"
+ ell.getName() + " - Valor: " + ell.getText());
//JOptionPane.showMessageDialog(null, "aki e ooooooo"+el.getText());
pegaImposto(bp,ell, listaRetornada);
//iteramos o div imposto
/* if(ell.getName().equals("imposto")){
elementoImposto=ell.getChildren();
itI=elementoImposto.iterator();
//iteracao no elemento imposto
while(itI.hasNext()){
Element elImposto=(Element) itI.next();
System.out.println(" dentro do IMPOSTO---------------- element():"
+ elImposto.getName() + " - Valor: " + elImposto.getText());
if(elImposto.getName().equals("IPI")){
System.out.println(" dentro do ipi---------------- element():"
+" - Valor: " + elImposto.getText());
elementoIPI=elImposto.getChildren();//recuperamos o filhos do ipi
itimp=elementoIPI.iterator();//iteramos o elemento
//iteracao no elemento ipi
while(itimp.hasNext()){
Element elipi=(Element) itimp.next();
System.out.println(" dentro do ipi ---------------- element():"+
elipi.getName() +" - Valor: " + elipi.getText());
if(elipi.getName().equals("IPITrib")){
System.out.println(" dentro do ipi TRIB **********element():"+
elipi.getName() +" - Valor: " + elipi.getText());
elementoIpiTrib=elipi.getChildren();
itIpiTrib=elementoIpiTrib.iterator();
//iteramos dentro do elemento ipi trib para recupearar a porcentagem e o valor caso exista
while(itIpiTrib.hasNext()){
Element elIpiTrib= (Element) itIpiTrib.next();
System.out.println(" dentro do ipi % %%%% **********element():"+
elIpiTrib.getName() +" - Valor: " + elIpiTrib.getText());
String aux= elIpiTrib.getName();
switch (aux) {
case "pIPI":
bp.setIpiPorcentagem(elIpiTrib.getText());
break;
case "vIPI":
bp.setIpiValor(Double.parseDouble(elIpiTrib.getText()));
break;
default:
break;
}
}
}
}
}
}
}*/
}
return 0;///
}
public int pegaImposto( BeanProdutosXML bp,Element ell , Collection<BeanProdutosXML> lislistaRetornada){
List elementoImposto,elementoIPI,elementoIpiTrib=null;
Iterator itI ,itimp,itIpiTrib =null;
elementoImposto=ell.getChildren();
itI=elementoImposto.iterator();
//iteracao no elemento imposto
while(itI.hasNext()){
Element elImposto=(Element) itI.next();
String tagnome = elImposto.getName();
switch (tagnome) {
case "cProd":
bp.setIdProduto(elImposto.getText());
System.out.println(" dentro do IMPOSTO---------------- element():"
+ elImposto.getName() + " - Valor: " + elImposto.getText().trim());
break;
case "cEAN":
bp.setCodigoBarras(elImposto.getText());
System.out.println(" dentro do IMPOSTO---------------- element():"
+ elImposto.getName() + " - Valor: " + elImposto.getText().trim());
break;
case "xProd":
bp.setNomeProduto(elImposto.getText());
System.out.println(" dentro do IMPOSTO---------------- element():"
+ elImposto.getName() + " - Valor: " + elImposto.getText().trim());
break;
case "uCom":
bp.setCodigoUnidade(elImposto.getText());
System.out.println(" dentro do IMPOSTO---------------- element():"
+ elImposto.getName() + " - Valor: " + elImposto.getText().trim());
break;
case "qCom":
bp.setEstoque(Double.parseDouble(elImposto.getText()));
System.out.println(" dentro do IMPOSTO---------------- element():"
+ elImposto.getName() + " - Valor: " + elImposto.getText().trim());
break;
case "vUnCom":
bp.setValorCompra(Double.parseDouble(elImposto.getText()));
System.out.println(" dentro do IMPOSTO---------------- element():"
+ elImposto.getName() + " - Valor: " + elImposto.getText().trim());
break;
case "vProd":
bp.setValorTotal(Double.parseDouble(elImposto.getText()));
System.out.println(" dentro do IMPOSTO---------------- element():"
+ elImposto.getName() + " - Valor: " + elImposto.getText().trim());
break;
case "IPI":
System.out.println(" dentro do ipi---------------- element():"
+" - Valor: " + elImposto.getText());
elementoIPI=elImposto.getChildren();//recuperamos o filhos do ipi
itimp=elementoIPI.iterator();//iteramos o elemento
//iteracao no elemento ipi
while(itimp.hasNext()){
Element elipi=(Element) itimp.next();
System.out.println(" dentro do ipi ---------------- element():"+
elipi.getName() +" - Valor: " + elipi.getText());
if(elipi.getName().equals("IPITrib")){
System.out.println(" dentro do ipi TRIB **********element():"+
elipi.getName() +" - Valor: " + elipi.getText());
elementoIpiTrib=elipi.getChildren();
itIpiTrib=elementoIpiTrib.iterator();
//iteramos dentro do elemento ipi trib para recupearar a porcentagem e o valor caso exista
while(itIpiTrib.hasNext()){
Element elIpiTrib= (Element) itIpiTrib.next();
System.out.println(" dentro do ipi % %%%% **********element():"+
elIpiTrib.getName() +" - Valor: " + elIpiTrib.getText());
String aux= elIpiTrib.getName();
switch (aux) {
case "pIPI":
bp.setIpiPorcentagem(elIpiTrib.getText().trim());
break;
case "vIPI":
bp.setIpiValor(Double.parseDouble(elIpiTrib.getText().trim()));
break;
default:
break;
}
}
}
}
break;
default:
break;
}
/* if(elImposto.getName().equals("IPI")){
}
*/
// JOptionPane.showMessageDialog(null, "nome "+bp.getNomeProduto()+" ipi "+bp.getIpiValor());
}
lislistaRetornada.add(bp);
for (BeanProdutosXML bpxml : lislistaRetornada){
System.out.println("dendtro do DAO IPI "+ bpxml.getIpiValor()+" nome "+bpxml.getNomeProduto());
}
return 0;
}
}
este codigo quando dou o print exibe a seguinte saida:
dendtro do DAO IPI 0.0 nome 8825-021 STABILO POINT C/25-ROLLERSET
dendtro do DAO IPI 156.6 nome null
dendtro do DAO IPI 0.0 nome TESOURA TS-1500 CIS PREMIUM DP C/6 BL
dendtro do DAO IPI 8.91 nome null
minha duvida e como deixa saida a assim , tudo na mesma linha:
dendtro do DAO IPI 156.6 nome 8825-021 STABILO POINT C/25-ROLLERSET
dendtro do DAO IPI 8.91 nome TESOURA TS-1500 CIS PREMIUM DP C/6 BL
desde ja agradeço qualquer ajuda.