Rah*_*kur 4 java xml xsd jaxb unmarshalling
我已经使用xjcxsd 生成了java类,其中根元素是A类型的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但它不是很有用!
如果根元素的类(此处为:AType)不包含XmlRootElement -annotation,则返回的根元素将包装在JAXBElement中,您必须使用其getValue() - 方法来获取根元素.
如果根元素的类型是匿名类型,则AFAIK,XJC将仅生成XmlRootElement注释.
| 归档时间: |
|
| 查看次数: |
3947 次 |
| 最近记录: |