Porque esta inserirndo em linhas diferente no array

0 respostas
TASF

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.

Criado 29 de julho de 2015
Respostas 0
Participantes 1