Ajuda na criacao de arquivo XML com XStream

2 respostas
VanHelsing

Boa noite pessoal,
Estou precisando gerar um arquivo XML com base no meu BD.
Pra isso to usando um servlet e a bibioteca XStream.
A string criada pelo XStream esta ok, mas quando salvo em arquivo fica um sujeira no inicio do arquivo.

Oque eu to fazendo de errado?

Ai vai o codigo

try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/teste","root","1234");
            Statement st = (Statement) con.createStatement();
            ResultSet rs = st.executeQuery("Select * From Clientes");

            while (rs.next()){
                XStream xstream = new XStream();
                xstream.alias("clientes", ClientesBean.class);

                ClientesBean clientes = new ClientesBean(rs.getInt("Codigo"),rs.getString("Nome"),rs.getString("Telefone"));
                xml = xstream.toXML(clientes);

                FileOutputStream arquivoGrav = new FileOutputStream("C:\clientes.xml");
                ObjectOutputStream objGravar = new ObjectOutputStream(arquivoGrav);
                objGravar.reset();
                objGravar.writeObject(xml);
                objGravar.flush();
                objGravar.close();
                arquivoGrav.flush();
                arquivoGrav.close();
            }
        } catch (ClassNotFoundException e){
            System.out.println(e);
        } catch (SQLException ex) {
            Logger.getLogger(Banco.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception e){
            System.out.println(e);
        } finally {
            out.close();
        }
    }

Arquivo gerado

¼Ý ♣yt h<clientes>    
  <codigo>4</codigo>
  <nome>Joao da Silva</nome>
  <telefone>99990003</telefone>
</clientes>

:frowning:

2 Respostas

laudenpower

Tipo não seria melhor você passar os dados para uma lista e depois serializa-los?, digo isso por que pelo que estou vendo você esta serializando cada linha que retornou no resultset, sem mencionar que para cada repetição você está instanciando o serizalizador novamente, eu te aconselharia a instanciar o xstream antes do while e depois que retorna o resultset manda-lo para uma lista e só depois serializa-la de uma vez apenas.
Espero ter ajudado

J

Colega,

ao meu ver está faltando vc declarar o tipo de arquivo (XML), assim como o encoding.

Abraços

Criado 23 de fevereiro de 2009
Ultima resposta 24 de fev. de 2009
Respostas 2
Participantes 3