Java a XML (Marshalling)

En este artículo vamos a hablar un poco acerca de cómo convertir objetos Java a XML. Este proceso de conversión recibe el nombre de Marshalling, que en computación define el proceso de transformar la representación de un objeto en memoria a un formato de transmisión o almacenamiento. En este contexto Marshalling es convertir un objeto Java en su respectiva representción XML.

Bien, empecemos creando una clase en Java con una serie de atributos.
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rolandopalermo.test;

/**
 *
 * @author Rolando
 */
@XmlRootElement
public class Factura {

    protected String razonSocial;
    protected String nombreComercial;
    protected String ruc;
    protected String claveAcceso;
    protected String codigoDoc;

    public String getClaveAcceso() {
        return claveAcceso;
    }

    public void setClaveAcceso(String claveAcceso) {
        this.claveAcceso = claveAcceso;
    }

    public String getCodigoDoc() {
        return codigoDoc;
    }

    public void setCodigoDoc(String codigoDoc) {
        this.codigoDoc = codigoDoc;
    }

    public String getNombreComercial() {
        return nombreComercial;
    }

    public void setNombreComercial(String nombreComercial) {
        this.nombreComercial = nombreComercial;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public String getRuc() {
        return ruc;
    }

    public void setRuc(String ruc) {
        this.ruc = ruc;
    }
}
A partir de esa clase nosotros podemos crear su representación XML a través del siguiente código:
public static void main(String[] args) {
    Factura f = new Factura();
    f.setClaveAcceso("123456789");
    f.setCodigoDoc("0149");
    f.setNombreComercial("Rolando Palermo Consulting");
    f.setRuc("10456095424");
    OutputStreamWriter out = null;
    try {
        JAXBContext context = JAXBContext.newInstance(
                new Class[]{Factura.class});
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty("jaxb.encoding", "UTF-8");
        marshaller.setProperty("jaxb.formatted.output",
                Boolean.valueOf(true));
        out = new OutputStreamWriter(new FileOutputStream(
                "D:\test01.xml"), "UTF-8");
        marshaller.marshal(f, out);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
El resultado de la ejecución de este método main dará el siguiente resultado:


   123456789
   0149
   Rolando Palermo Consulting

Comentarios

  1. ammm no se si me equivoco pero hacer eso es sencillo aplicando el uso de reflection capturamos los nombres de los campos y su valor y convertir los campos en etiquetas, el valor, y el nombre del mismo campo como cerradura de etiqueta...

    ResponderBorrar
    Respuestas
    1. Saludos Roliver
      Claro, lo que dices es correcto. Y justamente las librerías nativas de java que se utilizan para el marshalling, y que muestro en este artículo, utilizan el API Reflection. Pronto publicaré un artículo muy interesante en donde explicaré un poco más sobre las anotaciones que soporta JAXB.

      Borrar

Publicar un comentario