Избегание JAXBElement для групп замещения - PullRequest
4 голосов
/ 06 октября 2010

У меня есть xsd, в котором есть группы замещения. Когда я пытаюсь сгенерировать Java-классы, используя cxf wsdl2java JAXB, генерирующий список>, а не список. Как я могу избежать JAXBElement? Я пытался с binding.xml, но он не работает. Пожалуйста, помогите мне решить эту проблему

Спасибо

Ответы [ 2 ]

1 голос
/ 13 ноября 2010

Вы не можете избежать JAXBElement при использовании групп замещения.Причина, по которой создается JAXBElement, заключается в том, что недостаточно информации, чтобы указать, какой тип поместить в схему, поскольку для элемента можно заменить несколько типов.

0 голосов
/ 01 февраля 2011

Вы все еще можете проверить безопасность типов во время выполнения, используя 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();
    ...
}
...