должны ли сложные типы или анонимные типы использоваться в отображении jaxb / xsd - PullRequest
1 голос
/ 16 декабря 2010

Короче говоря: при отображении XML лучше иметь сложные типы и, следовательно, несколько классов верхнего уровня или просто анонимные типы и, следовательно, иерархии внутренних классов?

Длинная история: мне повезло, что схема мне нравится.Я попробовал оба подхода с eclipse и XJC и обнаружил, что классы, сгенерированные из схемы со сложными типами, приводят к необъяснимому ClassCastException при unmarshalling (я думаю, что я сделал что-то не так, но не имея опыта работы с JAXB, я пока не могу это понять).Подход анонимного типа / внутренних классов работает нормально, но кажется "вонючим", учитывая разделение интересов и повторное использование.

Дополнительный вопрос: есть ли очевидная ошибка, неопытные пользователи JAXB / XSD часто делают WRT-отображение сложных типов, которое, вероятно,привести к исключению ClassCastException при отмене сортировки?

Спасибо.

1 Ответ

1 голос
/ 16 декабря 2010

Я рекомендую людям, когда это возможно, разработать собственную объектную модель, а затем добавить аннотации JAXB, чтобы отобразить ее в XML.Способность JAXB генерировать объектную модель из XML-схемы - это удобный механизм.

Если вы хотите использовать генерацию классов, оба стиля схемы возможны и допустимы.

WRT ClassCastException, они обычно выводят фактические и ожидаемые классы.Чтобы устранить эту проблему, мне нужно увидеть аннотации к свойству, с которым связана ошибка, и если тип для фактического неупорядоченного типа имеет @XmlRootElement или @XmlElementDecl в ObjectFactory.что ваш XML не подходит для вашей схемы.Попробуйте установить экземпляр схемы на unmarshalled, чтобы включить проверку.

...