JAXB XJC geração de código - classe ObjectFactory é incompleta
Pergunta
Eu gerar classes Java do meu arquivo de esquema XSD usando a ferramenta de linha de comando XJC. A classe ObjectFactory gera conteúdo incompleto. Ele gera métodos de criação sem decoração JAXBElement<Type> createType
.
O que pode ser a razão disso? Saudações Dominik
Solução
Apenas alguns tipos em um JAXB2 XJC gerados wrappers necessidade JAXBElement
vinculativos. Esses tipos que têm a anotação @XMLRootElement
não precisa do invólucro, e assim a fábrica de objeto não gera um.
Outras dicas
JAXB gera métodos de fábrica que criam uma JAXBElement a partir de uma instância do objeto somente se o XSD contém uma definição complexType e uma definição elemento separado usando esse complexType COM O MESMO NOME, por exemplo:
<complexType name="my-type">
...
</complexType>
<element name="my-type" type="tns:my-type"/>
Neste caso, JAXB não anotar a classe gerada com uma anotação @XmlRootElement, mas irá fornecer os métodos de fábrica que você precisa para criar uma JAXBElement da ocorrência de objeto. Dessa forma, você pode serializar instâncias de tipos não-raiz com elementos como elementos raiz facilmente.
Então, você deve apenas adicionar uma -Declaração "elemento" com o mesmo nome, além de qualquer definição complexType você pretende ser usado como um elemento de nível superior, e ObjectFactory irá gerar os métodos de fábrica esperados.