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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top