JAXB: unmarshalling xml z wieloma nazwami dla tego samego elementu

Sądzę, że będzie to łatwe dla kogoś, kto naprawdę rozumie pliki wiążące JAXB ...

Podstawowe pytanie

Jak skonfigurować JAXB, aby niekarbował wielu elementów w tej samej klasie?

Uwaga: chcę uniknąć dodawania innej zależności do mojego projektu (np. MOXy). W idealnej sytuacji można to zrobić za pomocą adnotacji lub niestandardowego pliku powiązań.

tło

Mam dokument XML, który zawiera wiele odmian tego samego elementu - każdy z dokładnie tymi samymi właściwościami. Korzystając z poniższego przykładu, wszystko, na czym mi zależy, to „Pracownicy”, ale XML określa „dyrektorów, menedżerów i pracowników”. Dla naszych celów są to wszystkie podklasy tego samego rodzica i musimy tylko pracować z rodzajem nadrzędnym (Pracownik), a nasz model obiektowy nie ma ani nie potrzebuje instancji podklas.

Chcę, aby JAXB związał dowolne wystąpieniedirector, manager, or staff elementy wEmployee obiekt.

Przykład

wkład:

<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>

wydajność:

Po wycofaniu tego przykładu, skończyłbym zOrganization obiekt z jedną właściwością:List<Employees> employees gdzie każdy pracownik ma tylko imię i nazwisko.

(Uwaga: każdy pracownik byłby typemEmployee NIEDirector/Manager/Staff. Informacje o podklasach zostałyby utracone podczas odmawiania. Nie przejmujemy się również wycofywaniem - musimy tylko tworzyć obiekty z XML)

Czy można to zrobić bez rozszerzeń, takich jak MOXy? Czy niestandardowy plik bindings.xjb może zapisać dzień?

questionAnswers(1)

yourAnswerToTheQuestion