XStream es una interesante y simple libreria para serializar objetos a XML y viceversa.
Caracteristicas de XStream
Fácil de usar. Cuenta una fachada de alto nivel que simplifica los casos más comunes de uso.
No requiere homologaciones “mappings”. La mayoría de los objetos se puede serilizar sin necesidad de crear archivos de homologación o “mapping”.
Rendimiento. Velocidad y bajo consumo de memoria son parte esencial del diseño, lo que hace que XStream sea adecuada sistemas con grandes objetos o alta demanda de envío de mensajes.
XML Limpio. XStream usa “reflection” y crea archivos XML facilmente entendibles por humanos y más compactos que usando la serialización nativa de Java.
No requiere modificar los objetos. Se serializan los campos internos, incluyendo privados y finales. Las clases internas y no publicas son soportadas. No se requiere que las clases tengan un constructor por defecto (sin parametros).
Soporte completo para objetos complejos. Las referencias duplicadas (duplicate references) encontradas en el objeto se mantienen. Soporta referencias duplicadas (circular references).
Integración con otras API de XML. Implementado un interfaz, Xstream puede serializar directamente hacia/desde cualquier estructura de arbol (tree structure) no sólo XML.
Estratégias de conversión personalizables. Las estrategias de conversión se pueden registrar permitiendo personalizar como los tipos son representados en XML.
Mensajes de error. Cuando una excepción, por XML mal formado, es encontrada se provee un diagnostico detallado para ayudar a encontrar y solucionar el problema.
Formato se salida alterno. El diseño modular permite otros formatos de salida. Xstream tiene actualmente soporte para JSON.
Manos a la obra:
Pueden consultar el tutorial de dos minutos en el cual me estoy basando para este post, con algunos detalles adicionales.
Estoy omitiendo los constructores y métodos para ahorrar espacio ;-)
Supongamos que tenemos los siguientes POJOs (Plain Old Java Object) :
ejemplo 1 - pojos
public class PhoneNumber {private int code;private String number;// ... constructores y métodos}public class Person {private String firstname;private String lastname;private PhoneNumber phone;private PhoneNumber fax;// ... constructores y métodos}El siguiente es un ejemplo de como serializar un objeto tipo Person:
ejemplo 2 - usando XStream
XStream xstream = new XStream();//[1] alias opcionalesxstream.alias("person", Person.class);Person joe = new Person("Joe", "Walnes");joe.setPhone(new PhoneNumber(123, "1234-456"));joe.setFax(new PhoneNumber(123, "9999-999"));String xml = xstream.toXML(joe);ejemplo 2.1 - contenido de la variable xml
<person><firstname>Joe</firstname><lastname>Walnes</lastname><phone><code>123</code><number>1234-456</number></phone><fax><code>123</code><number>9999-999</number></fax></person>Para convertir de XML a un objeto java:
ejemplo 2.2 - xml a java.
//usamos la variable xml del ejemplo 2Person newJoe = (Person)xstream.fromXML(xml);
No hay comentarios:
Publicar un comentario