現在、JAXB を介して XML ドキュメントを非整列化しようとしています。プロジェクト内ですでに JAXB クラスを生成しており、ルート クラスに @XmlRootElement のアノテーションを付けています。
残念ながら、非整列化を試みると、次の例外が発生します。
java.lang.ClassCastException: javax.xml.bind.JAXBElement cannot be cast to a.b.Foo
私の Foo クラスには適切な注釈があり、私が知る限り、これは私の XML を Foo クラスにアンマーシャリングできるはずです。
これを引き起こす原因について何か考えはありますか?
編集(明確化のため):非整列化しようとしている呼び出しは次のとおりです。
Foo foo = (Foo)unmarshaller.unmarshal(input);
2 回目 の更新 スキーマの更新は許可されていませんが、以下は 'Foo' 要素に対する XML スキーマ構造です...
<xsd:element name="Foo" type="Foo_Type"/>
<xsd:complexType name="Foo_Type">
<!-- more schema definition here -->
</xsd:complexType>
次に、JAXB バインディングを介して @XmlRootElement 注釈を Foo クラスに追加します。スキーマを次のように変更すると、次のようになることがわかりました。
<xsd:element name="Foo">
<xsd:complexType>
<!-- more schema definition here -->
</xsd:complexType>
</xsd:element>
すべて正常に動作しますが、繰り返しになりますが、スキーマを更新することは想定されていません。