JAXB: Demarshalling von XML mit mehreren Namen für dasselbe Element aufheben

Ich gehe davon aus, dass dies für jemanden, der die JAXB-Bindungsdateien wirklich versteht, einfach sein wird ...

Grundlegende Frage

Wie kann JAXB so konfiguriert werden, dass mehrere Elemente in derselben Klasse gemarshallt werden?

Hinweis: Ich möchte vermeiden, meinem Projekt eine weitere Abhängigkeit hinzuzufügen (z. B. MOXy). Idealerweise kann dies mit Anmerkungen oder einer benutzerdefinierten Bindungsdatei erreicht werden.

Hintergrund

Ich habe ein XML-Dokument, das viele Variationen desselben Elements enthält - jedes mit genau den gleichen Eigenschaften. In meinem Beispiel unten geht es mir nur um "Mitarbeiter", in der XML sind jedoch "Direktoren, Manager und Mitarbeiter" angegeben. Für unsere Zwecke sind dies alle Unterklassen desselben übergeordneten Objekts. Wir müssen nur mit dem übergeordneten Typ (Employee) arbeiten, und unser Objektmodell verfügt nicht über oder benötigt keine Instanzen der Unterklassen.

Ich möchte, dass JAXB jede Instanz von bindetdirector, manager, or staff Elemente in eineEmployee Objekt.

Beispiel

Eingang:

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

Ausgabe:

Nachdem ich dieses Beispiel entmarshallt hatte, endete ich mit einemOrganization Objekt mit einer Eigenschaft:List<Employees> employees Dabei hat jeder Mitarbeiter nur einen Vor- und Nachnamen.

(Hinweis: Jeder Mitarbeiter wäre vom TypEmployee NICHTDirector/Manager/Staff. Unterklasseninformationen würden beim Aufheben der Rangierung verloren gehen. Wir kümmern uns auch nicht um das Zurücksetzen des Marshalls - wir müssen nur Objekte aus XML erstellen.

Kann dies ohne Erweiterungen wie MOXy durchgeführt werden? Kann eine benutzerdefinierte bindings.xjb-Datei den Tag retten?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage