JAXB: десортировка xml с несколькими именами для одного и того же элемента

Я полагаю, что это будет легко для тех, кто действительно понимает файлы связывания 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 спасти положение?

11
задан gMale 20 June 2012 в 21:06
поделиться