xjcルート要素Aのタイプが である xsdを使用して Java クラスを生成しましたAType。
jaxb によって生成されたルート要素はAType& クラスAが生成されていません。
その xsd に対応する xml をアンマーシャリングして JaxbElement をキャストしようとすると、キャスト例外がスローされます。
スニペット:
JAXBContext jaxbContext = JAXBContext.newInstance(Class.forName("AType"));
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
AType aType = (AType) unmarshaller.unmarshal(new ByteArrayInputStream(xmlString.getBytes()));
例外:
java.lang.ClassCastException: javax.xml.bind.JAXBElement
他のケースでも同じコードが適切に実行され、正常に逆シリアル化されます。
unmarshal()どのようなタイプのオブジェクトが得られるかを見つけるにはどうすればよいですか? この状況で何が問題なのかわかりません。フィールドを印刷してみましたjaxbElementが、あまり役に立ちませんでした。