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
が、あまり役に立ちませんでした。