web 2.0

sábado, 27 de febrero de 2010

Serializar objetos Java a XML



Mediante XStream podemos crear de manera extremadamente fácil un XML. En este ejemplo, aprenderemos la manera de hacerlo, para ello descarguemos la distribución binaria de la página oficial.-

HERRAMIENTAS

  • Equipo portatil Acer Aspire, Intel Celeron 1.86 Ghz, 1 GB RAM
  • Mandriva 2009, KDE 4
  • XStream 1.3.1
  • Eclipse 3.4.2-

DESARROLLO

Antes que nada, debemos agregar las librerias XStream a nuesro entorno de desarrollo, ya sea Eclipse, NetBeans o cualquier otro. En este enlace puedes ver como agregar librerias a eclipse. Las librerias que agregaremos para este ejemplo serán “xstream-1.3.1.jar”  y “xpp3_min-1.1.4c.jar”.
Posteriormente creamos un proyecto Dynamic Web. Creamos una clase Java llamada “Direccion” y posteriormente otra llamada “Persona” dentro del paquete “beans”.
package beans;

public class Direccion {

 private String calle;
 private String colonia;
 private String municipio;
 private String estado;
 private int cp;

}
package beans;

import java.util.ArrayList;

public class Persona {

private String nombre;
private String apaterno;
private String amaterno;
private ArrayList direccion;

}
Finalmente encapsulamos todos atributos en sus métodos setter y getter, seleccionando los atributos y dando click derecho sobre la selección para escoger la opción de “Source–Generate Getters and Setters”.
Ahora crearemos una clase llamada TestXML dentro del paquete test, y copiaremos el siguiente código:
public class TestXML {

public static void main(String args[])
{
Direccion direccion = new Direccion(
"Aqui la calle","Aqui la colonia","Aqui municipio",
"Aqui el estado", 12345);

Persona persona = new Persona(
"Ascari", "Romo", "Pedraza", direccion);

XStream stream = new XStream();
stream.alias("persona", Persona.class);

String xml = stream.toXML(persona);
System.out.print(xml);

}
Como ven es muy fácil, ahora más interesante será obtener los datos de un manejador de BD, crear el XML como ya se explico y enviarlo a la capa de presentación en Flex para su visualización.

3 comentarios:

Anónimo dijo...

pero esto solo convierte a XML una sola linea..

Direccion("Aqui la calle","Aqui la colonia","Aqui municipio","Aqui el estado", 12345);

y que pasa si yo quiero pasar a XML.. 2 direcciones al mismo tiempoo, asii..

Direccion("Aqui la calle","Aqui la colonia","Aqui municipio","Aqui el estado", 12345);
Direccion2("Aqui la calle2","Aqui la colonia2","Aqui municipio2","Aqui el estado2", 12345);

creo que funciona :(

@insan3 dijo...

Si tu constructor recibe seis campos de entrada creo que tal vez este haciendo mas trabajo del que le corresponde.

Mi sugerencia: usar una capa intermedia para la generación de instancia al cual le pases tu contenido en forma de objeto.

De manera que e.j Direccion d = Loader.loadClass('Direccion',data) funcionara para cargar una instancia de direccion con la data proporcionada y setteada.

Esta es mi opinion, tal vez haya mas trabajo del que ilustras en el codigo, pero creo que servira para alguien.

Best.

Ascari Romo dijo...

Hola insane!

El propósito de este artículo no es impartir una cátedra de patrones de diseño y separación de capas, sencillamente es ilustrar el uso de una simple libreria XStream.

Saludos!!

Publicar un comentario