criação de um arquivo XML

Caros,

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

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

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.

Olá…

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

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