Jaxb: comment unmarshall xs:XML-partie de chaîne?

J'ai une demande à faire XML<->conversions à l'aide de Jaxb généré automatiquement et classes avec maven-jaxb2-plugin.

Quelque part dans les profondeurs de mon schéma, j'ai la possibilité d'entrer "TOUT" xml.

Mise à jour: il décrit mieux mon schéma. Certains connus XML emballage totalement inconnu de la partie (le "tout" de la partie).

<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>

Ce cartes (par jaxb) à un intérieur de classe comme ça.

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "any"
})
public static class XmlAnyPayload {

    @XmlAnyElement(lax = true)
    protected Object any;

Quand je unmarshall l'ensemble de la structure, il n'est pas un problème. L'Objet "tout" sera rendu dans un org.apache.xerces.dom.ElementNSImpl. Maintenant, je veux recréer l'objet Java manuellement puis passez au format XML. Comment dois-je prendre du hasard XML et de mettre dans le tout (org.apache.xerces.dom.ElementNSImpl) de l'élément à être en mesure de construire l'objet Java?

Également, le cas suivant est alors que j'ai cet élément comme java, je veux unmarshall cette partie (pour être en mesure d'extraire la chaîne XML de cet élément). Mais ce n'est pas possible. J'obtiens une exception sur les éléments racines. Mais il n'est pas possible d'annoter ElementNSImpl.

unable to marshal type "com.sun.org.apache.xerces.internal.dom.ElementNSImpl" as an element because it is missing an @XmlRootElement annotation

Avez-vous des suggestions sur la façon de traiter ces problèmes?

  • Grâce à une bonne entrée dans ce domaine, j'ai réussi à résoudre ce problème. Une façon, j'ai collé avec mon nœud Dom. Juste ajouté un peu simple d'analyse XML pour obtenir les dom à partir de la chaîne. Dans l'autre sens, j'ai eu recours à travailler avec le XML DOM l'espace XPATH (sage), puisqu'il en fait m'a sauvé un peu de temps et les changements de contexte. XPATH est en fait très bon pour garder le code de la complexité vers le bas.