En el post anterior vimos cómo convertir clase java a XML con JAXB.  Esta API proporciona dos características principales: la capacidad de serializar las referencias de objetos Java a XML y la inversa, es decir, deserializar XML en objetos Java.

Ejemplo gráfico:

Envio de mensaje mediante web services

Para la conversión de un XML a clase, se tendrá en cuenta lo siguiente (Ejemplo Básico):

1. El objeto clase que se va a deserializar debe tener la notación @XmlRootElement.

import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class RespuestaSibicoSeguridadDto implements Serializable {
    private String mensaje;
    private Boolean isValido;
    public String getMensaje() {
        return mensaje;
    }
    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }
    public Boolean getIsValido() {
        return isValido;
    }
    public void setIsValido(Boolean isValido) {
        this.isValido = isValido;
    }
}

2. Ejemplo de método donde se implementa, al cual se le pasa como parametro el String XML y devuelve Objeto de la clase.

import java.io.Serializable;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class ConversionJAXB {
     public RespuestaSibicoSeguridadDto convertirXmlToRespuestaSeguridadDto(String xmlRespuestaSeguridad)
            throws BramantiException {
        RespuestaSibicoSeguridadDto seguridad;
        try {
            JAXBContext contextSession = JAXBContext.newInstance(RespuestaSibicoSeguridadDto.class);
            Unmarshaller unSession = contextSession.createUnmarshaller();
            StringReader readerResultado = new StringReader(xmlRespuestaSeguridad);
            seguridad = (RespuestaSibicoSeguridadDto) unSession.unmarshal(readerResultado);
        } catch (JAXBException ex) {         
            throw new BramantiException(ex.getMessage(), ex);
        }
        return seguridad;
    }
}

Espero me haya hecho entender, cualquier inquietud no dudes en contactarme. Buen día

4 Replies to “Convertir XML a Clase Java con JAXB”

  1. Muchas gracias muy claro,

    Una cuestión, cuando el XML es muy grande, no me está haciendo el set de todos los elementos.

    alguna opción extra que se deba configurar?

  2. Saludos!
    Perdona que te conteste algo tarde. Pero no he tenido el caso que me comentas. Lo que podemos hacer es que me envíes el problema del xml que necesitas y poder probar y ver cómo se puede solucionar el caso. Envíame el proyecto de librerías con las clases y el setteo que estás haciendo. Quedo atento

  3. Hola que tal?

    Tengo un error que me dice que BramantiException no puede ser resuelto y no se hacer.

  4. Hola monori Aguilera! Perdona responderte hasta ahora.. ando un poco de cosas… quisiera poderte colaborar y la manera mas facil es que me envies el proyecto al correo jmantillap@gmail.com, y poderte solucionar.
    Quedo atento o que me envies de donde lo puedo descargar y de esa manera revisartelo.. Quedo atento y buen día

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *