Caros,
Como faço para criar e gravar dados em um arquivo XML, usando java ?
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: