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:
- Un elemento es a la vez
nillable="true"
yminOccurs="0"
. En este caso que hacenull
en el campo mapeado/media de la propiedad? Cuando la propiedad esJAXBElement
a null valor significa que el elemento no está presente y unJAXBElement
envase null significa un elemento XML conxsi:nil="true"
. - 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í.
- Hay una estructura de elección donde
foo
obar
pueden ocurrir elementos y son del mismo tipo. Aquí unJAXBElement
es necesario porque el simple hecho de encontrarse con unString
El valor no es suficiente para indicar qué elemento debe ordenarse. - 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
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.