Fala galerinha...
Antes de tudo feliz natal a todos.... mas enquanto o perú não vai pro forno, nós estamos aqui na batalha... =D
Vamos ao que interessa...
Eu estou lendo as tabelas de um BD com JDBC com o método abaixo que retorna uma lista com o conteúdo da tabela em questão:
// Retorna uma lista com os dados das tabelas
@SuppressWarnings("unchecked")
public List getDadosTabelas(String nomeTabela) {
PreparedStatement ps = null;
ResultSet rsPegaDados = null;
List listaDados = new ArrayList();
try {
ps = getConnection()
.prepareStatement("SELECT * FROM " + nomeTabela);
rsPegaDados = ps.executeQuery();
int qntColunas = getQuantidadeColunas(nomeTabela);
while (rsPegaDados.next()) {
for (int j = 0; j < qntColunas; j++) {
listaDados.add(rsPegaDados.getString(j + 1));
}
}
ps.close();
getConnection().close();
} catch (SQLException e) {
e.printStackTrace();
}
return listaDados;
}
Com o método abaixo eu pego essa lista e converto pra XML com o XStream:
// Gera o arquivo XML
public void geraXML(String nomeTabela) {
xstream = new XStream();
List listaObj = tabelas.getDadosTabelas(nomeTabela);
String objetosXML = xstream.toXML(listaObj);
try {
FileOutputStream gravaXml = new FileOutputStream(nomeTabela
+ ".xml");
gravaXml.write(objetosXML.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Meu problema é o seguinte, quando eu converto essa lista pra XML, o arquivo gerado fica como se todos objetos fossem do tipo String, porém eu preciso que os mesmos fiquem com o tipo especifico de cada coluna.
Ex: Se o objeto é da coluna ID eu preciso que ele fique assim <ID>0001</ID> e não <string>0001</string> como está acontecendo.
Sei que é possível utilizar alias no XStream, mas esse método não vai gerar os XML's de uma ou outra tabelas de forma que eu possa específicar qual o alias de cada coluna e classe, isso deveria ser gerado dinamicamente. Cada tabela que ele ler, ele pega o tipo da coluna e coloca no alias na hora de gerar o XML.
Alguém já fez algo do tipo, ou tem alguma idéia de como fazer isso?
Abraço!!!!