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.