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 pytanieJak 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łoMam 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.
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ń?