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
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...
ResponderBorrarSaludos Roliver
BorrarClaro, 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.