|
XStream - Converta objetos Java para XML
Por Caio Paes(caio.paes@ccc.ufcg.edu.br)
A Coluna Java de março fala um pouco sobre o XStream - uma biblioteca para a conversão de objetos para XML. O XStream é open source e, sem necessidade de configurações e com muita rapidez, pode-se escrever e ler objetos em texto XML muito limpo.
O XStream é uma biblioteca para a conversão de objetos Java para XML (Extensible Markup Language) e vice-versa. A sua interface é muito simples e fácil de ser usada. Com apenas uma chamada de método ao Xstream, o programador Java realiza a conversão de objetos em um texto XML. O texto gerado pode ser serializado utilizando as funções disponíveis na biblioteca padrão de Java ou qualquer outra forma definida pelo desenvolvedor. Com a mesma simplicidade, um código XML pode ser lido e objetos serão criados. Além da facilidade de uso, o XStream faz o seu trabalho sem a necessidade de mapeamentos, modificações nas classes ou arquivos de configuração. Outra característica muito forte dessa biblioteca é a sua capacidade de gerar XML facilmente lido por seres humanos. Por meio da aplicação de aliases (apelidos), as tags que compõem o XML podem ser personalizadas pelo desenvolvedor. A seguir, vamos criar um exemplo bem simples. Afinal de contas, o objetivo, quando se procura o XStream, é não complicar a vida do programador. Inicialmente, criaremos as classes para os dados utilizados na nossa aplicação.
package petnews.colunajava.xstream.model;
// Usuario.java
import java.util.List;
import java.util.ArrayList;
public class Usuario {
private String login;
private List<Tweet> tweets;
public Usuario() {
this.tweets = new ArrayList<Tweet>();
}
public String getLogin() {
return this.login;
}
public void setLogin(String login) {
this.login = login;
}
public List<Tweet> getTweets() {
return this.tweets;
}
public void setTweets(List<Tweet> tweets) {
this.tweets = tweets;
}
public void addTweet(Tweet tweet) {
if (this.getTweets() != null) {
this.tweets.add(tweet);
}
}
}
Observe, que não precisamos fazer nenhuma modificação no código do usuário para que possamos realizar a conversão de um objeto dessa classe para texto XML. Outra observação importante está no fato de podermos converter coleções de dados (“List<Tweet>”). O XStream converte listas, mapas e arrays. Veja, a seguir, o código da classe Tweet.
package petnews.colunajava.xstream.model;
// Tweet.java
import java.sql.Timestamp;
public class Tweet {
private String mensagem;
private Timestamp timestamp;
public Tweet() {
this.setTimestamp(new Timestamp(System.currentTimeMillis()));
}
public String getMensagem() {
return this.mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public Timestamp getTimestamp() {
return this.timestamp;
}
public void setTimestamp(Timestamp timestamp) {
this.timestamp = timestamp;
}
}
Agora, vamos criar um pequeno exemplo que utiliza o XStream para converter objetos instanciados em um texto XML.
package petnews.colunajava.xstream;
import petnews.colunajava.xstream.model.Usuario;
import petnews.colunajava.xstream.model.Tweet;
import com.thoughtworks.xstream.XStream;
public class XStreamTeste {
public static void main(String[] args) {
XStream xstream = new XStream();
xstream.alias("usuario", Usuario.class);
xstream.alias("tweet", Tweet.class);
Usuario usuario = new Usuario();
usuario.setLogin("petccufcg");
Tweet tweet = new Tweet();
tweet.setMensagem("#PETNews XStream - Converta objetos Java para XML - Por @CaioCMPaes");
usuario.addTweet(tweet);
String xml = xstream.toXML(usuario);
System.out.println(xml);
Usuario usuarioCopia = (Usuario) xstream.fromXML(xml);
System.out.println("Nome: " + usuarioCopia.getLogin());
System.out.println("Tweet: " + usuarioCopia.getTweets().get(0).getMensagem());
}
}
Os aliases criados indicam para o XStream que, em substituição ao uso do nome completo da classe (indicando todos os pacotes), ele use apenas “usuario” e “tweet”. Lembrando o início da matéria, apenas um método é utilizado para fazer toda a conversão da hierarquia de dados do objeto Usuario no XML a seguir. Observe, também, a leitura do conteúdo XML, resultando num objeto com os mesmos dados que existam antes da conversão.
<usuario>
<login>petccufcg</login>
<tweets>
<tweet>
<mensagem>#PETNews XStream - Converta objetos Java para XML - Por @CaioCMPaes</mensagem>
<timestamp>2012-03-13 00:49:38.574</timestamp>
</tweet>
</tweets>
</usuario>
Nome: petccufcg
Tweet: #PETNews XStream - Converta objetos Java para XML - Por @CaioCMPaes
O XStream é open source e seu desenvolvimento é corrente. A release mais recente foi lançada no dia 03 de novembro de 2011. Além da biblioteca ser bem documentada e possuir vários tutoriais na Internet, seu uso é muito comum para a serialização de objetos. É muito útil para salvar os dados de projetos de pequeno e médio porte (quanto à quantidade de dados). Isso tudo, vale lembrar, sem a necessidade de configurações, mudanças no código, ou criação de esquemas relacionais, etc. O código-fonte do exemplo pode ser encontrado aqui. Jornal PETNews - Edição: Jeymisson Oliveira - Revisão: Savyo Igor e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved. |
|