Diferencia entre revisiones de «XStream»

De Dos Ideas.
Saltar a: navegación, buscar
(Página nueva: XStream es una libreria Java para la serializacion y deserealizacion de objetos a XML (o también [JSON]). == Ejemplo de uso == El [Tutorial de XStream | http://xstream.codehaus.org...)
(Sin diferencias)

Revisión del 14:50 27 jul 2008

XStream es una libreria Java para la serializacion y deserealizacion de objetos a XML (o también [JSON]).


Ejemplo de uso

El [Tutorial de XStream | http://xstream.codehaus.org/tutorial.html ] tiene un ejemplo claro y simple de uso.

Con XStream cuando serializamos una clase los tags del XML generado quedan con el nombre de los atributos de esta clase. Por ejemplo, aca vemos como serializamos el siguiente DTO compuesto:

Los objetos a serializar

 public class PersonaDTO {

     private String identidad;
     private Long edad;
     private DocumentoDTO documentoIdentidad;

     // Getters y Setters
 }


 public class DocumentoDTO {
     private Long numero;
     private String tipo;

     // Getters y Setters
 }

Serialización

 import com.thoughtworks.xstream.XStream;

 public class XStreamConAnnotation {
     public String toXml(PersonaDTO dto) {
         XStream xstream = new XStream();
         return (String) xstream.toXML(dto);
     }
 }

XML resultante

Lo cual genera el siguiente XML:

<test.PersonaDTO.java>
  <identidad>Juancito</identidad>
  <edad>16</edad>
  <documentoIdentidad>
    <numero>35123125</numero>
    <tipo>DNI</tipo>
  </documentoIdentidad>
</test.PersonaDTO.java>


Es posible cambiar los nombres de los atributos en el XML utilizando los alias que provee XStream.

Anotaciones

Desde la version 1.3 de [XStream] se agrego como funcionalidad la posibilidad de usar Annotations en lugar de los alias para establecer el mapeo entre las clases, los atributos y los tags de los XML.

Con esta nueva funcionalidad para modificar algun tag hay que hacer 2 cosas

  1. Anotar la clase
  2. Activar el uso de anotaciones al usar XStream

Anotación de la clase

En las clases a serializar hay que poner sobre el atributo (o clase) la annotation con el nombre que queremos que tenga una vez serializado. Ejemplo:

 @XStreamAlias("Persona")
 public class PersonaDTO {

     @XStreamAlias("nombre")
     private String identidad;

     @XStreamAlias("años")
     private Long edad;

     @XStreamAlias("documento")
     private DocumentoDTO documentoIdentidad;

     // Getters y Setters
 }

 public class DocumentoDTO {

     @XStreamAlias("numeroDocumento")
     private Long numero;

     @XStreamAlias("tipoDocumento")
     private String tipo;

     // Getters y Setters
 }

Activación de anotaciones

En el codigo que invoca a XStream se agrega para que procese las annotations, pasandole el .class de la clase que contiene las annotations.

 public class XStreamConAnnotation {

     public String toXml(PersonaDTO dto) {
         XStream xstream = new XStream();
         xstream.autodetectAnnotations(true);

         return (String) xstream.toXML(dto);
     }
 }

También es posible activar clase-por-clase el uso de anotaciones, con una línea similar a

 xstream.processAnnotations(PersonaDTO.class);

XML resultante

<Persona>
  <nombre>Juancito</nombre>
  <años>16</años>
  <documento>
    <numeroDocumento>35123125</numeroDocumento>
    <tipoDocumento>DNI</tipoDocumento>
  </documento>
</Persona>


Ver también