Importar Xml para Jtable e Postgres

0 respostas
S
Bom dia. Sou novo no fórum e também em Java. Após pesquisar na net adaptei para minha necessidade um código que importa um arquivo Xml e joga os dados numa Jtable. 
Tenho duas dúvidas:
 1º - Gostaria de ajuda para jogar esses dados que estão na Jtable para o banco de dados Postgres. Normalmente eu faria uma vinculação diretamente na Jtable com a Query, mas como não estou usando default table estou perdido e não sei como fazer isso.
 2º - Nesse código utiliza-se StringTokenizer e pelo que vi algum tópico do Vini Godoy essa utilização não é recomendável. Estou com problema pois algumas vezes o nome da loja vai ser um nome composto (ex.: "Loja Principal"). Nesse caso a string está importando para o campo errado na Jtable, pois assume que o "espaço" entre os nomes deve constituir uma nova coluna. Alguém teria uma sugestão para contornar esse problema e concatenar o nome da filial mesmo quando tiver um espaço entre eles.  Em Tempo: A segunda coluna deverá sempre ser o código do produto.

 Desde  agradeço pela atenção.  

 Segue abaixo o código que estou utilizando:
Import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

public class XmlImport extends AbstractTableModel{
     List data = new ArrayList();
     List columns = new ArrayList();
     private String[] cabec={"Filial", "Produto"};

public XmlImport() {
try {
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     DocumentBuilder db = dbf.newDocumentBuilder();
     Document doc = db.parse("d:/vendas.xml");
     NodeList n1 = doc.getElementsByTagName("Filial");
     NodeList n2 = doc.getElementsByTagName("Produto");
     NodeList listOfPersons = doc.getElementsByTagName("Row");
     String data1 = "", data2 = "", data3 = "";
      	for (int i = 0; i < listOfPersons.getLength(); i++)
	 {
		data1 = n1.item(i).getFirstChild().getNodeValue();
		data2 = n2.item(i).getFirstChild().getNodeValue();
		String line = data1 + " " + data2 + " ";
		StringTokenizer st2 = new StringTokenizer(line, " ");
	while (st2.hasMoreTokens())
		data.add(st2.nextToken());    
	}
		columns.add("");
		columns.add("");
	} catch (Exception e) 
	{
		e.printStackTrace();
}
	}
public int getRowCount() {
	return data.size() / getColumnCount();
}
public int getColumnCount() {
	return columns.size();
}
@Override
public String getColumnName(int columnIndex){
 	return cabec[columnIndex].toString();
}
public Object getValueAt(int rowIndex, int columnIndex) {
	return (String) data.get((rowIndex * getColumnCount())+ columnIndex);
}
	public static void main(String argv[]) throws Exception {
                XmlImport a = new XmlImport();
	JTable table = new JTable();
	table.setModel(a);
	JScrollPane scrollpane = new JScrollPane(table);
	JPanel panel = new JPanel();
	panel.add(scrollpane);
	JFrame frame = new JFrame();
	frame.add(panel, "Center");
	frame.pack();
	frame.setVisible(true);
	}
}
Criado 13 de setembro de 2011
Respostas 0
Participantes 1