criação de um arquivo XML

3 respostas
G

Caros,

Como faço para criar e gravar dados em um arquivo XML, usando java ?

3 Respostas

R

vc pode usar a biblioteca XStream (http://xstream.codehaus.org/)

exemplo: http://www.guj.com.br/java.tutorial.artigo.144.1.guj

ou usar as classes do java mesmo:

java.beans.XMLDecoder
java.beans.XMLEncoder

exemplo:

Pessoa p1 = new Pessoa();

p1.setCodigo( 1 );

p1.setNome( Rodrigo Braz );

p1.setIdade( 27 );

p1.setSexo( M );

p1.setEndereco( Rua X, 001 );
Pessoa p2 = new Pessoa();
    p2.setCodigo( 2 );
    p2.setNome( "Teste" );
    p2.setIdade( 10 );
    p2.setSexo( 'M' );
    p2.setEndereco( "Rua Teste" );
    
    Pessoa p3 = new Pessoa();
    p3.setCodigo( 3 );
    p3.setNome( "Teste de Açentuáção" );
    p3.setIdade( 100 );
    p3.setSexo( 'M' );
    p3.setEndereco( "Rua João übitaân" );
    
    List<Pessoa> lista = new ArrayList<Pessoa>();
    lista.add( p1 );
    lista.add( p2 );
    lista.add( p3 );
    // gera xml
    try {            
        XMLEncoder encoder = new XMLEncoder( new FileOutputStream( "Pessoa2.xml" ) );
        encoder.writeObject( lista );
        encoder.close();
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    }

    // recupera xml
    try {
        XMLDecoder decoder = new XMLDecoder( new FileInputStream( "Pessoa2.xml" ) );
        ArrayList result = (ArrayList)decoder.readObject();
        
        Iterator<Object> iter = result.iterator();
        
        while ( iter.hasNext() ) {
            Pessoa pessoa = (Pessoa)iter.next();
            System.out.println("----------------------------------------------------");
            System.out.println("Código...: " + pessoa.getCodigo() );
            System.out.println("Nome.....: " + pessoa.getNome() );
            System.out.println("Idade....: " + pessoa.getIdade() );
            System.out.println("Endereco.: " + pessoa.getEndereco() );
            System.out.println("Sexo.....: " + pessoa.getSexo() );
        }
        
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    }
G

Meu arquivo precisa gravar mais coisas, como por exemplo a linha inicial do arquivo :

<?xml version=“1.0” encoding=“utf-8”?>

preciso gravar também campos com atributos:

<LOG level=“0”>
<source>VOXlans.Kernel</source>
<date timezone="-03:00">17/Oct/2006 12:08:02</date>
<info>OnStart() - Inicio da carga do serviço VOXlans</info>
</LOG>

Pelo exemplo do Xstream, não sei como fazer isso.

C

Olá...

public void createXml() {
        Funcionario func = new Funcionario();
        
        func.add(new ClienteTO( getNome(), getPessoa(), getCnpjCpf(),
                getIeRg(), getEndereco(), getBairro(), getCep(), getCidade(),
                getUf(), getPais(), getTelefone(), getCelular(), getEmail() ));      
       
        
        XStream xstream = new XStream();
        xstream.alias("funcionario", Funcionario.class);
        xstream.alias("cliente", ClienteTO.class);

        xstream.addImplicitCollection(Funcionario.class, "clientes");
        
        String xml = xstream.toXML(func);
       
       try {
           PrintWriter saida = new PrintWriter(new FileOutputStream("C://cliente.xml"));
           saida.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
               "<?xml-stylesheet type=\"text/xsl\" " +
               "href=\"C:\Documents and Settings\ccarvalho\Desktop\" +
               "aula2\web\cliente.xsl\"?>\n");
           saida.println(xml);
           saida.flush();
           saida.close();
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       }
     }

Você pode usar o PrintWriter..., não sei se é a maneira correta mais deu certo para mim! :roll:

Criado 19 de outubro de 2006
Ultima resposta 21 de out. de 2006
Respostas 3
Participantes 3