Gravar e Ler XML em arquivo

Pessoal, estou gerando um arquivo xml, queria pegar esse resultado xml e jogar para um arquivo e após ler esse arquivo xml. Só preciso o código para Salvar um arquivo e para Ler um arquivo ai aplico para salvar o meu resultado XML que já funciona.

Valeu

Olá, vc pode dar uma olhada aqui:

http://www.guj.com.br/articles#category_18

Olá eu uso o xstream e recomendo!

http://xstream.codehaus.org/index.html

[]'s

Olá Tiago eu usei o xStrean e já estou gerando o xml, gostaria só de pegar esse xml e colocar em um arquivo e depois ler o arquivi, acredito que o mais dificil já fiz que seria gerar o xml, caso queira olhar segue o código que gera e abre o xml abaixo.

código
import com.thoughtworks.xstream.XStream;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
*

  • @author mss
    */
    public class NewJFrame extends javax.swing.JFrame {

    /** Creates new form NewJFrame */
    public NewJFrame() {
    initComponents();

     XStream xstream = new XStream();// Criando um objeto XStream
     String string_jpanelEmXML = xstream.toXML(jp_principal);// Passando os dados do JPanel Java para XML e salva em uma String
     System.out.println(string_jpanelEmXML);//imprime XML na tela
    
     JPanel jp_recebe = (JPanel) xstream.fromXML(string_jpanelEmXML);//Transforma a String XML em JPanel de novo
    
     JFrame jf = new JFrame("nova janela");//cria uma nova janela
     jf.add(jp_recebe,java.awt.BorderLayout.CENTER);//adiciona o JPanel novo na janela
     
     //Define o tamanho e joga na tela
     jf.setSize(new Dimension(400,400));
     jf.setMaximumSize(new Dimension(400,400));
     jf.setPreferredSize(new Dimension(400,400));
     jf.setVisible(true);
    

    }

    @SuppressWarnings(“unchecked”)
    //
    private void initComponents() {

     buttonGroup1 = new javax.swing.ButtonGroup();
     jp_principal = new javax.swing.JPanel();
     jButton1 = new javax.swing.JButton();
     jButton2 = new javax.swing.JButton();
     jToggleButton1 = new javax.swing.JToggleButton();
     jCheckBox1 = new javax.swing.JCheckBox();
     jCheckBox2 = new javax.swing.JCheckBox();
    
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
     jButton1.setText("JB");
    
     jButton2.setText("Teste");
    
     jToggleButton1.setText("jToggleButton1");
    
     jCheckBox1.setText("JCB");
    
     jCheckBox2.setText("jCheckBox2");
    
     javax.swing.GroupLayout jp_principalLayout = new javax.swing.GroupLayout(jp_principal);
     jp_principal.setLayout(jp_principalLayout);
     jp_principalLayout.setHorizontalGroup(
         jp_principalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
         .addGroup(jp_principalLayout.createSequentialGroup()
             .addGap(272, 272, 272)
             .addComponent(jToggleButton1)
             .addContainerGap(290, Short.MAX_VALUE))
         .addGroup(jp_principalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(jp_principalLayout.createSequentialGroup()
                 .addGap(0, 184, Short.MAX_VALUE)
                 .addGroup(jp_principalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                     .addComponent(jButton1)
                     .addGroup(jp_principalLayout.createSequentialGroup()
                         .addGap(240, 240, 240)
                         .addComponent(jButton2))
                     .addGroup(jp_principalLayout.createSequentialGroup()
                         .addGap(187, 187, 187)
                         .addComponent(jCheckBox1))
                     .addGroup(jp_principalLayout.createSequentialGroup()
                         .addGap(150, 150, 150)
                         .addComponent(jCheckBox2)))
                 .addGap(0, 184, Short.MAX_VALUE)))
     );
     jp_principalLayout.setVerticalGroup(
         jp_principalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
         .addGroup(jp_principalLayout.createSequentialGroup()
             .addGap(205, 205, 205)
             .addComponent(jToggleButton1)
             .addContainerGap(234, Short.MAX_VALUE))
         .addGroup(jp_principalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(jp_principalLayout.createSequentialGroup()
                 .addGap(0, 108, Short.MAX_VALUE)
                 .addComponent(jButton1)
                 .addGap(1, 1, 1)
                 .addComponent(jButton2)
                 .addGap(91, 91, 91)
                 .addComponent(jCheckBox1)
                 .addGap(61, 61, 61)
                 .addComponent(jCheckBox2)
                 .addGap(0, 109, Short.MAX_VALUE)))
     );
    
     getContentPane().add(jp_principal, java.awt.BorderLayout.CENTER);
    
     pack();
    

    }//

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new NewJFrame().setVisible(true);
      }
      });
      }

    // Variables declaration - do not modify
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JToggleButton jToggleButton1;
    private javax.swing.JPanel jp_principal;
    // End of variables declaration

}

[quote=Diogodj]Olá Tiago eu usei o xStrean e já estou gerando o xml, gostaria só de pegar esse xml e colocar em um arquivo e depois ler o arquivi, acredito que o mais dificil já fiz que seria gerar o xml, caso queira olhar segue o código que gera e abre o xml abaixo.

[/quote]

bom para gravar em um arquivo o seu xml gerado pelo XStream é bem simples, basta instanciar um objeto do tipo OutputStream… segue um pequeno exemplo:

[code]
File xmlMap = new File(caminho_do_seu_arquivo);
OutputStream streamOut = null;

	if (!(xmlMap.exists()))
		xmlMap.createNewFile();
	else {
		xmlMap.delete();
		xmlMap.createNewFile();
	}		
	streamOut = new FileOutputStream(xmlMap);	
            XStream xstream = new XStream(new DomDriver());			
	xstream.toXML(seuObjeto, streamOut);[/code]

e a proposito quando for postar códigos no forum, utilize as tags code… como eu fiz =]
boa sorte

OK Anderson, valeu show de bola e para abrir esse arquivo xml ?? tens um exemplo de código, queria somente os comandos java para eu abrir um arquivo.

Estou gerando o xml e jogando numa string e imprimindo na tela, queria poder jogar isso num arquivo.

 XStream xstream = new XStream();// Criando um objeto XStream
        String string_jpanelEmXML = xstream.toXML(area_de_trabalho);// Passando os dados do JPanel Java para XML e salva em uma String
        System.out.println(string_jpanelEmXML);//imprime XML na tela

S

[quote=Diogodj]Estou gerando o xml e jogando numa string e imprimindo na tela, queria poder jogar isso num arquivo.

 XStream xstream = new XStream();// Criando um objeto XStream
        String string_jpanelEmXML = xstream.toXML(area_de_trabalho);// Passando os dados do JPanel Java para XML e salva em uma String
        System.out.println(string_jpanelEmXML);//imprime XML na tela

S[/quote]

eh o codigo que postei… ele vai gerar um arquivo com o seu XML gerado…

Anderson está dando erro na ultima linha, qual objeto vai lá dentro na ultima linha de código ??

[code] XStream xstream = new XStream(new DomDriver());
String string_jpanelEmXML = xstream.toXML(area_de_trabalho);// Passando os dados do JPanel Java para XML e salva em uma String

    File xmlMap = new File( "c:/" );
    OutputStream streamOut = null;

    if (!(xmlMap.exists())) {
        xmlMap.createNewFile();
    } else {
        xmlMap.delete();
        xmlMap.createNewFile();
    }
    streamOut = new FileOutputStream(xmlMap);
    //XStream xstreamr = new XStream(new DomDriver());
    xstream.toXML(seuObjeto, streamOut);

[/code]

[quote=Diogodj]Anderson está dando erro na ultima linha, qual objeto vai lá dentro na ultima linha de código ??

[code] XStream xstream = new XStream(new DomDriver());
String string_jpanelEmXML = xstream.toXML(area_de_trabalho);// Passando os dados do JPanel Java para XML e salva em uma String

    File xmlMap = new File( "c:/" );
    OutputStream streamOut = null;

    if (!(xmlMap.exists())) {
        xmlMap.createNewFile();
    } else {
        xmlMap.delete();
        xmlMap.createNewFile();
    }
    streamOut = new FileOutputStream(xmlMap);
    //XStream xstreamr = new XStream(new DomDriver());
    xstream.toXML(seuObjeto, streamOut);

[/code]

[/quote]

[code] XStream xstream = new XStream(new DomDriver());
String string_jpanelEmXML = xstream.toXML(area_de_trabalho);// Passando os dados do JPanel Java para XML e salva em uma String

    File xmlMap = new File("c:/meuxml.xml");
    OutputStream streamOut = null;

    if (!(xmlMap.exists())) {
        xmlMap.createNewFile();
    } else {
        xmlMap.delete();
        xmlMap.createNewFile();
    }
    streamOut = new FileOutputStream(xmlMap);
    //XStream xstreamr = new XStream(new DomDriver());
    xstream.toXML(area_de_trabalho, streamOut);

[/code]

veja se funciona…
se tiver dando erro, poste o erro aqui

Anderson !

dá erro

incompatible types
required: com.itextpdf.text.pdf.codec.Base64.OutputStream
found: java.io.FileOutputStream

Circundar com …

NA SEGUINTE LINHA
streamOut = new FileOutputStream(xmlMap);

[code]String string_jpanelEmXML = xstream.toXML(area_de_trabalho);// o area_de_trabalho seria o caminho para area de trabalho?

 File xmlMap = new File("c:/meuxml.xml");//esse é o local onde vou salvar meu xml?

[/code]

???

deu certo já galera… valew :smiley: