I have an application doing XML<->conversions using Jaxb and automatically generated classes with maven-jaxb2-plugin.
Someplace deep in my schema, I have the possibility to enter "ANY" xml.
Update: this better describes my schema. Some known XML wrapping a totally unknown part (the "any" part).
<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> This maps (by jaxb) to a inner class like this.
@XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "any" }) public static class XmlAnyPayload { @XmlAnyElement(lax = true) protected Object any; When I unmarshall the entire structure, it is no problem. The "Object any" will render into a org.apache.xerces.dom.ElementNSImpl. Now, I want to recreate the Java object manually and then go to XML. How do I take some random XML and put into the any (org.apache.xerces.dom.ElementNSImpl) element to be able to build up the Java object?
Also, the next case is when I have this element as java, I want to unmarshall this very part (to be able to extract the XML string of this element). But this is not possible. I get an exception about root elements. But it is not possible to annotate ElementNSImpl.
unable to marshal type "com.sun.org.apache.xerces.internal.dom.ElementNSImpl" as an element because it is missing an @XmlRootElement annotation Do you have any suggestions on how to handle these problems?