Je travaille actuellement sur les messages XML/unmarshalling triages. Voici mes deux éléments XML:JAXB Utiliser l'espace de noms par défaut
@XmlRootElement(namespace = "http://namespaceA")
public class RootElementA {
@XmlElement
private ElementXX elementXX;
}
@XmlRootElement(namespace = "http://namespaceB")
public class RootElementB {
@XmlElement
private ElementXX elementXX;
}
Quand unmarshalling un RootElementB je l'erreur suivante:
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://namespaceB", local:"ElementXX"). Expected elements are <{}ElementXX>
Si j'ajoute l'espace de noms à la déclaration ElementXX, j'ai la même erreur, sauf qu'il se produit pour les propriétés de ElementXX.
Le problème est que je ne peux pas définir l'espace de noms sur les propriétés de ElementXX parce qu'il est spécifié dans les deux espaces de noms et je ne veux pas dupliquer ma classe juste pour changer l'espace de noms ...
-vous j'ai une idée ? Merci.
EDIT
Voici un exemple XML:
<RootElementA xmlns="http://namespaceA">
<ElementXX>
<name>blabla</name>
<desc>blabla</desc>
</ElementXX>
</RootElementA>
Si je ne mets pas un espace de noms ElementXX en classe XmlRootElementA je l'erreur ci-dessus. Si je l'ai défini, j'ai la même erreur mais pour la propriété de nom.
Je mis à jour ma question avec le XML. Le XML provient d'une API externe, donc je ne peux pas l'éditer avant unmarshalling (je n'ai pas trouvé de réponse dans votre lien). – c4k