Я полагаю, это будет легко для тех, кто действительно понимает файлы привязки JAXB...
Основной вопрос
Как вы настраиваете JAXB для отмены нескольких элементов в одном классе?
Примечание. Я хочу избежать добавления другой зависимости к моему проекту (например, MOXy). В идеале это может быть выполнено с помощью аннотаций или пользовательского файла привязок.
Фон
У меня есть XML-документ, содержащий множество вариаций одного и того же элемента - каждый с такими же свойствами. Используя мой пример ниже, все, о чем я забочусь, это "Сотрудники", но XML указывает "директоров, менеджеров и сотрудников". Для наших целей это все подклассы одного и того же родителя, и нам нужно только работать с родительским типом (Employee), и наша объектная модель не имеет или не нуждается в экземплярах подклассов.
Я хочу, чтобы JAXB привязывал любой экземпляр элементов director, manager, or staff
к объекту Employee
.
Пример
ввод:
<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>
вывод:
После разборки этого примера я получаю объект Organization
с одним свойством: List<Employees> employees
, где каждый сотрудник имеет только имя firstName и lastName.
(Примечание: каждый сотрудник будет иметь тип Employee
NOT Director/Manager/Staff
. Информация о подклассе будет потеряна при unmarshalling. Мы также не заботимся о том, чтобы маршировать обратно - нам нужно только создавать объекты из XML)
Можно ли это сделать без расширений, таких как MOXy? Может ли пользовательский файл bindings.xjb сохранить день?