我有一个 xsd,其中包含替换组。当我尝试使用 cxf wsdl2java JAXB 生成 List> 而不是 List 生成 java 类时。我怎样才能避免 JAXBElement?我尝试使用 binding.xml 但它不起作用。请帮我解决这个问题
谢谢
我有一个 xsd,其中包含替换组。当我尝试使用 cxf wsdl2java JAXB 生成 List> 而不是 List 生成 java 类时。我怎样才能避免 JAXBElement?我尝试使用 binding.xml 但它不起作用。请帮我解决这个问题
谢谢
使用替换组时无法避免 JAXBElement。创建 JAXBElement 的原因是没有足够的信息来判断将哪种类型放入模式,因为可以用多种类型代替元素。
您仍然可以使用 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();
...
}