Gravar e Ler XML em arquivo

12 respostas
D

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

12 Respostas

G

Olá, vc pode dar uma olhada aqui:

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

T

Olá eu uso o xstream e recomendo!

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

[]'s

D

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
    

}

A
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. ....
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:
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);

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

D

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.

D

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

A

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

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

D

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

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);
A
Diogodj:
Anderson está dando erro na ultima linha, qual objeto vai lá dentro na ultima linha de código ??
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);

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

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

D

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

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

????

R

deu certo já galera… valew :smiley:

Criado 15 de janeiro de 2011
Ultima resposta 13 de jun. de 2013
Respostas 12
Participantes 5