Saltar al contenido

¿Por qué y cuándo se requiere JAXBElement en JAXB?

Este escrito ha sido analizado por nuestros expertos para que tengas la garantía de la veracidad de nuestra esta división.

Solución:

Hay algunos casos de uso en los que un JAXBElement es requerido:

  1. Un elemento es a la vez nillable="true" y minOccurs="0". En este caso que hace null en el campo mapeado/media de la propiedad? Cuando la propiedad es JAXBElement a null valor significa que el elemento no está presente y un JAXBElement envase null significa un elemento XML con xsi:nil="true".
  2. Hay 2 elementos globales con el mismo tipo complejo con nombre. Dado que en las clases JAXB corresponden a tipos complejos, se necesita una forma de capturar qué elemento raíz se encontró. Para más detalles ver este artículo que escribí.
  3. Hay una estructura de elección donde foo o bar pueden ocurrir elementos y son del mismo tipo. Aquí un JAXBElement es necesario porque el simple hecho de encontrarse con un String El valor no es suficiente para indicar qué elemento debe ordenarse.
  4. un elemento con xsi:nil se encuentra en el documento que contiene attributes. En este ejemplo, el objeto correspondiente a ese elemento aún se puede desorganizar para contener el attribute valores, pero JAXBElement aún puede indicar que el elemento fue null.

JAXBElement se utiliza para conservar el nombre/espacio de nombres del elemento en casos de uso en los que no hay suficiente información en el modelo de objetos. A menudo se usa con grupos de sustitución.

Sin ningún metadato JAXB, el resultado se envolverá en un JAXBElement. Puede eliminar el nivel de raíz JAXBElement utilizando la anotación @XmlRootElement.

Si utiliza archivos xsd de una fuente externa y no hay ninguna anotación XmlRootElement disponible en las clases generadas, el uso de JAXBElement durante el proceso de ordenación puede resultar muy útil, ya que puede desarmar el xml en un objeto mediante el envoltorio JAXBElement. Verá que especificar la clase en sí no funciona en ese caso…

Esto funcionará:

JAXBElement je = (JAXBElement) unmarshaller.unmarshal(objectXML);
Object = je.getValue();

Esto lanzará una JAXBException:

Object obj = (Object) unmarshaller.unmarshal(objectXML);

Reseñas y valoraciones del post

Tienes la opción de ayudar nuestro quehacer añadiendo un comentario o dejando una puntuación te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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

Respuestas a preguntas comunes sobre programacion y tecnología