JAXB: xml de unmarshalling com vários nomes para o mesmo elemento

Eu acho que isso vai ser fácil para alguém que realmente entende arquivos de ligação JAXB ...

Pergunta básica

Como você configura o JAXB para desmembrar vários elementos na mesma classe?

Nota: Eu quero evitar adicionar outra dependência ao meu projeto (como o MOXy). Idealmente, isso pode ser feito com anotações ou um arquivo de ligações personalizadas.

fundo

Eu tenho um documento XML que contém muitas variações do mesmo elemento - cada um com exatamente as mesmas propriedades. Usando meu exemplo abaixo, tudo o que me interessa é "Funcionários", mas o XML especifica "diretores, gerentes e funcionários". Para os nossos propósitos, são todas subclasses do mesmo pai e só precisamos trabalhar com o tipo pai (Employee) e nosso modelo de objeto não tem ou precisa de instâncias das subclasses.

Eu quero que o JAXB ligue qualquer instância dedirector, manager, or staff elementos em umEmployee objeto.

Exemplo

entrada:

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

saída:

Depois de desmarcar este exemplo, eu acabaria com umOrganization objeto com uma propriedade:List<Employees> employees onde cada funcionário tem apenas um firstName e lastName.

(Nota: cada funcionário seria do tipoEmployee NÃODirector/Manager/Staff. Informações de subclasse seriam perdidas quando desarmar. Nós também não nos importamos com o empacotamento de volta - só precisamos criar objetos a partir de XML)

Isso pode ser feito sem extensões como o MOXy? Um arquivo bindings.xjb personalizado pode salvar o dia?

questionAnswers(1)

yourAnswerToTheQuestion