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ásicaComo 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.
fundoEu 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.
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?