現在、XML メッセージのマーシャリング/アンマーシャリングに取り組んでいます。ここに私の2つのXML要素があります:
@XmlRootElement(namespace = "http://namespaceA")
public class RootElementA {
@XmlElement
private ElementXX elementXX;
}
@XmlRootElement(namespace = "http://namespaceB")
public class RootElementB {
@XmlElement
private ElementXX elementXX;
}
RootElementB をアンマーシャリングすると、次のエラーが発生します。
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://namespaceB", local:"ElementXX"). Expected elements are <{}ElementXX>
名前空間を ElementXX 宣言に追加すると、ElementXX のプロパティで発生することを除いて、同じエラーが発生します。
問題は、ElementXX のプロパティに名前空間を設定できないことです。これは、両方の名前空間で指定されており、名前空間を変更するためだけにクラスを複製したくないためです...
アイデアはありますか?ありがとう。
編集
XML のサンプルは次のとおりです。
<RootElementA xmlns="http://namespaceA">
<ElementXX>
<name>blabla</name>
<desc>blabla</desc>
</ElementXX>
</RootElementA>
XmlRootElementA クラスで名前空間を ElementXX に設定しないと、上記のエラーが発生します。設定すると、同じエラーが発生しますが、名前プロパティが対象です。