Salvar e Recuperar dados usando XStream !?

8 respostas
kiq095

Oi gente aqui eu ja fiz um topico parecido com esse que era como gerar um arquivo xml .. mais eles nao terminaram de e responder as perguntas e to com um bocado de problemas aqui dependendo disso por isso estou criando esse topico mais recente ...

mais meu problema e ...

fiz duas classes para gerar o arquivo XML .. mais nao sei como salvar e nem como recuperar os dados dessa clase XMl...

olha as classes ai ..

essa e a classe simples..!!!

package k_atualizador;

public class DRIVERS {
 private String DRIVER_FORNECEDOR;
 private String DRIVER_RECEPTOR;


    public String getDRIVER_FORNECEDOR() {
        return DRIVER_FORNECEDOR;
    }

    public void setDRIVER_FORNECEDOR(String DRIVER_FORNECEDOR) {
        this.DRIVER_FORNECEDOR = DRIVER_FORNECEDOR;
    }

    public String getDRIVER_RECEPTOR() {
        return DRIVER_RECEPTOR;
    }

    public void setDRIVER_RECEPTOR(String DRIVER_RECEPTOR) {
        this.DRIVER_RECEPTOR = DRIVER_RECEPTOR;
    }

e aqui eu gero o XML em cima dessa classe ...
no metodo Salvar ... mas so to gerando salvar q e bom nada ...hehehe

package k_atualizador;

import com.thoughtworks.xstream.XStream;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;


public class RECUPERAR_DRIVERS_URL {


 public RECUPERAR_DRIVERS_URL(){

 }
    public boolean Salvar(String Driver_fornecedor,String Driver_receptor){

        boolean test=false;
        String XML="";

        try{
            XStream xstream = new XStream();

            DRIVERS Drivers=new DRIVERS();
                Drivers.setDRIVER_FORNECEDOR(Driver_fornecedor);
                Drivers.setDRIVER_RECEPTOR(Driver_receptor);

            List drivers = new ArrayList(1);
                drivers.add(Drivers);

                XML=xstream.toXML(drivers);
                System.out.println(XML);
                test=true;
        }
        catch(Exception ex){

            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "ERRO AO SALAVAR DIVERS","ERRO  12",JOptionPane.ERROR_MESSAGE);
            test=false;
 }


        return test;
    }



}

e essa classe esta gerando uma string assim

<list>
  <k__atualizador.DRIVERS>
    <DRIVER__FORNECEDOR>TEST DRIVER  1</DRIVER__FORNECEDOR>
    <DRIVER__RECEPTOR>TESTT DRIVER 2</DRIVER__RECEPTOR>
  </k__atualizador.DRIVERS>
</list>

e to achando estranho esse ....... era pra ser algo do tipo ...... ou estou errado ???

mais no mais eu queria saber ..
como salvar e ler ??

pois vou fazer nessa mesma classe um metodo chamado Recuperar que vai ler o arquivo e recuperar os dados q salvei...

o problema e como fazer isso??
pois nunca usei o XStream e nao entendo muito bem essa area de gerar ou ler arquivos XML ...
andei persquisando aqui e vi que o proprio XStream tem um metodo pra isso ...ou e melhor fazer isso em outra API ??

de preferencia queria salvar em .XML e li aqui um pouco sobre FileWriter ...

como posso resolver meu problema ??

8 Respostas

V

Pra Salvar

String dados = this.xCon.toXML(javaBean);
 File file = new File("teste.xml");

  BufferedWriter bw = new BufferedWriter(new FileWriter(file));
  bw.write(dados);
  bw.flush();
  bw.close();

Lendo arquivo

File file = new File(filename);
BufferedReader br = new BufferedReader(new FileReader(file));

StringBuffer sb = new StringBuffer();
String line = "";
while ((line = br.readLine()) != null) {
     sb.append(line);
}

br.close();

MyClass myclass = this.xCon.fromXML(sb.toString());
kiq095

e como olho se esta realmente salvo ??

outra …
essa linha serve pra que ???

String dados = this.xCon.toXML(javaBean);

e outra tentei ler aqui masi nao deu …!!
tem um geito mais simples ???

porq eu queria uma coisa mais simples tipo

String nome=nome.xml.getNome;

sera q tem como ???

V

Para saber é so olhar na pasta onde voce pediu para salvar.

Com este codigo vc esta salvando um bean para um arquivo xml. Depois quando for ler vc faz cast para o bean.

Pessoa p = new Pessoa();
p.setNome("nome");
p.setIdade(30);

String dados = this.xCon.toXML(p);  
File file = new File("c:/teste.xml");  
   
BufferedWriter bw = new BufferedWriter(new FileWriter(file));  
bw.write(dados);  
bw.flush();  
bw.close();

Lendo o arquivo

File file = new File("c:/teste.xml");  
BufferedReader br = new BufferedReader(new FileReader(file));  
   
StringBuffer sb = new StringBuffer();  
String line = "";  
while ((line = br.readLine()) != null) {  
      sb.append(line);  
}  
   
br.close();  
   
Pessoa p = (Pessoa) this.xCon.fromXML(sb.toString());  

/* Apos isso é so usar os getters */
String nome = p.getNome();
int idade = p.getIdade();
kiq095

ok mais ta dando erro na linha …!!!

Pessoa p = (Pessoa) this.xCon.fromXML(sb.toString());

ta falando q o xCon nao e uma classes existente !!!

por q ???

V

O xCon é uma variavel que declarei na classe

private XStream xCon;
kiq095

ok … tinha imaginado isso mais declarei ela e nao deu nada ai o erro muda da erro na mesma linha so que no …

formXML

olha o codigo ai …

public class RECUPERAR_DRIVERS_URL {
File file = new File("c:/Drivers.xml");
 private XStream xstream;

 public RECUPERAR_DRIVERS_URL(){

 }
    public boolean Salvar(String Driver_fornecedor,String Driver_receptor)throws FileNotFoundException, IOException{

        boolean test=false;
        String XML="";

        try{
                DRIVERS drivers=new DRIVERS();
                    drivers.setDRIVER_FORNECEDOR(Driver_fornecedor);
                    drivers.setDRIVER_RECEPTOR(Driver_receptor); 
                File file = new File("c:/teste.xml");

                XML=xstream.toXML(drivers);
                BufferedWriter bw = new BufferedWriter(new FileWriter(file));
                bw.write(XML);
                bw.flush();
                bw.close();

                System.out.println(XML);
                JOptionPane.showMessageDialog(null, XML,"ERRO  12",JOptionPane.INFORMATION_MESSAGE);
                test=true;
        }
        catch(Exception ex){

            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "ERRO AO SALAVAR DIVERS"+ex.toString(),"ERRO  20",JOptionPane.ERROR_MESSAGE);
            test=false;
 }


        return test;
    }
public void Ler() throws FileNotFoundException, IOException{
        String Driver_fornecedor="";
        String Driver_receptor="";

try{
    
        BufferedReader br = new BufferedReader(new FileReader(file));

        StringBuilder sb = new StringBuilder();
        String line = "";

        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        br.close();

     // DRIVERS Drivers =(DRIVERS) this.xstream.formXML(sb.toString());
 

}
catch(Exception ex){

            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "ERRO"+ex.toString(),"ERRO  20",JOptionPane.ERROR_MESSAGE);
          
 }
    }



}
kiq095

iiiii… testei aqui e ta dando esse erro na hora de salvar …!!

java.lang.NullPointerException at k_atualizador.RECUPERAR_DRIVERS_URL.Salvar(RECUPERAR_DRIVERS_URL.java:40) at k_atualizador.Frame_configurar.botao_DRIVERSActionPerformed(Frame_configurar.java:156) at k_atualizador.Frame_configurar.access$000(Frame_configurar.java:9) at k_atualizador.Frame_configurar$1.actionPerformed(Frame_configurar.java:53) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6267)

kiq095

aqui e meu metodo LER

salvar ja ta salvando certinho .. ta tudo ...ok

so falta ler mesmo ..!!!

public void Ler() throws FileNotFoundException, IOException{
        String Driver_fornecedor="";
        String Driver_receptor="";

try{
    
        BufferedReader br = new BufferedReader(new FileReader(file));

        StringBuilder sb = new StringBuilder();
        String line = "";

        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        br.close();

     ////// o erro esta nessa linha testei aqui ate descobrir ..... ta falando q ela ta pasando um parametro Null ... como conserto isso ????
     DRIVERS Drivers =(DRIVERS) this.xstream.fromXML(sb.toString());
 

        Driver_fornecedor=Drivers.getDRIVER_FORNECEDOR();
        Driver_receptor=Drivers.getDRIVER_RECEPTOR();
        JOptionPane.showMessageDialog(null,Driver_fornecedor+Driver_receptor,"ERRO  20",JOptionPane.ERROR_MESSAGE);

}

e esse e o erro q ta dando ..
parece q nao ta lendo as variaveis ...

java.lang.NullPointerException
        at k_atualizador.RECUPERAR_DRIVERS.Ler(RECUPERAR_DRIVERS.java:74)
        at k_atualizador.Frame_configurar.botao_DRIVERSActionPerformed(Frame_configurar.java:158)
        at k_atualizador.Frame_configurar.access$000(Frame_configurar.java:9)
        at k_atualizador.Frame_configurar$1.actionPerformed(Frame_configurar.java:53)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

como posso corrigir isso ???
por q deu o mesmo erro na hora de salvar mais era q eu nao estava passando nada para as variareis ...quando chamava o método ... masi aqui nao sei o q seria ..!!
por o metodo nao necessitada de valores ...

como resolvo isso ???????

Criado 3 de março de 2011
Ultima resposta 3 de mar. de 2011
Respostas 8
Participantes 2