Я полагаю, что это будет легко для тех, кто действительно понимает файлы связывания JAXB...
Как настроить JAXB для демаршалирования нескольких элементов в один и тот же класс?
Примечание. Я не хочу добавлять в свой проект еще одну зависимость (например, MOXy). В идеале это можно сделать с помощью аннотаций или пользовательского файла привязок.
У меня есть XML-документ, содержащий множество вариантов одного и того же элемента, каждый из которых имеет одинаковые свойства. Используя мой пример ниже, все, что мне нужно, это «Сотрудники», но XML указывает «директора, менеджеры и персонал». Для наших целей это все подклассы одного и того же родителя, и нам нужно работать только с родительским типом (Employee), а наша объектная модель не имеет и не нуждается в экземплярах подклассов.
Я хочу, чтобы JAXB привязывал любой экземпляр элементов директора, менеджера или персонала
к объекту Сотрудник
.
ввод:
<organization>
<director>
<fname>Dan</fname>
<lname>Schman</lname>
</director>
<manager>
<fname>Joe</fname>
<lname>Schmo</lname>
</manager>
<staff>
<fname>Ron</fname>
<lname>Schwan</lname>
</staff>
<staff>
<fname>Jim</fname>
<lname>Schwim</lname>
</staff>
<staff>
<fname>Jon</fname>
<lname>Schwon</lname>
</staff>
</organization>
вывод:
После разупорядочения этого примера я бы получил объект Организация
с одним свойством: Список<Сотрудников> сотрудников
где у каждого сотрудника есть только имя и фамилия.
(Примечание: каждый сотрудник будет иметь тип Сотрудник
НЕ Директор/Менеджер/Персонал
. Информация о подклассе будет потеряна при разупорядочении. --нам нужно только создавать объекты из XML)
Можно ли это сделать без таких расширений, как MOXy? Может ли пользовательский файл bindings.xjb спасти положение?