我使用 xjc
从一个根元素为类型为 AType
的 xsd 中生成了 Java 类。
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
中的字段,但它并没有很有用!