避免替换组的JAXBElement

时间:2010-10-06 07:48:57

标签: jaxb2

我有一个xsd,里面有替换组。当我尝试使用cxf生成java类时wsdl2java JAXB生成List>而不是列表。我怎样才能避免使用JAXBElement?我尝试使用binding.xml但它不起作用。请帮我解决这个问题

谢谢

2 个答案:

答案 0 :(得分:1)

使用替换组时无法避免使用JAXBElement。创建JAXBElement的原因是没有足够的信息来告诉哪个类型要放入模式中,因为可以用多个类型替换元素。

答案 1 :(得分:0)

您仍然可以使用getDeclaredType在运行时检查类型安全性。例如

JAXBContext jc = JAXBContext.newInstance("com.foo");
Unmarshaller u = jc.createUnmarshaller();

File f = new File("src/Sample.xml");
SomeObject d = (SomeObject ) u.unmarshal(f);
AnyTypeContainerObject c = d.getBody();
JAXBElement<?> any = (JAXBElement<?>) c.getAny();
if ((AnyTypeObject.class.equals(any.getDeclaredType()))) {
    AnyTypeObject value = (AnyTypeObject ) any.getValue();
    ...
}