Salvar e Recuperar dados usando XStream !?

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…!!!

[code]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;
}[/code]

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

[code]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;
}

} [/code]

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 <?xml version=“1.3” encoding=“uft-8”> … </?xml > 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 ??

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());

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 ???

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();

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 ???

O xCon é uma variavel que declarei na classe

private XStream xCon;

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);
          
 }
    }



}

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)

aqui e meu metodo LER

salvar ja ta salvando certinho … ta tudo …ok

so falta ler mesmo …!!!

[code]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);

}[/code]

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 ???