Tengo una aplicación que hace XML < -> conversiones utilizando Jaxb y clases generadas automáticamente con maven-jaxb2-plugin.Jaxb: cómo unmarshall xs: cualquier parte de cadena XML?
En alguna parte de mi esquema, tengo la posibilidad de ingresar "CUALQUIER" xml.
Actualización: esto describe mejor mi esquema. Algunos XML conocidos envuelven una parte totalmente desconocida (la parte "cualquier").
<xs:complexType name="MessageType">
<xs:sequence>
<xs:element name="XmlAnyPayload" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##any"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="OtherElements">
....
</xs:sequence>
Este mapas (por jaxb) a una clase interna como este.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"any"
})
public static class XmlAnyPayload {
@XmlAnyElement(lax = true)
protected Object any;
Cuando deshago toda la estructura, no hay problema. El "Object any" se convertirá en un org.apache.xerces.dom.ElementNSImpl. Ahora, quiero recrear el objeto Java manualmente y luego ir a XML. ¿Cómo tomo un XML aleatorio y lo coloco en el elemento any (org.apache.xerces.dom.ElementNSImpl) para poder construir el objeto Java?
Además, el siguiente caso es cuando tengo este elemento como java, quiero deshacer esta misma parte (para poder extraer la cadena XML de este elemento). Pero esto no es posible. Obtengo una excepción sobre los elementos raíz. Pero no es posible anotar ElementNSImpl.
unable to marshal type "com.sun.org.apache.xerces.internal.dom.ElementNSImpl" as an element because it is missing an @XmlRootElement annotation
¿Tiene alguna sugerencia sobre cómo manejar estos problemas?
Gracias a una buena entrada en este dominio, me las arreglé para resolver esto. De una manera, me quedé con mi nodo Dom. Acabo de agregar un análisis XML simple para obtener el dom de la cadena. Por otro lado, recurrí a trabajar con el XML en el espacio DOM (XPATH sabio), ya que realmente me ahorró tiempo y cambios de contexto. XPATH es realmente bueno para mantener baja la complejidad del código. –