Classe compartilhada para o elemento filho no JAXB em diferentes xmls / roots
EmJAXB ao usar geração de classe automática viaxjc dexsd esquema.
alpha.xsd
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="alpha">
<xs:complexType>
<xs:sequence>
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
beta.xml
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="country">
<xs:complexType>
<xs:sequence>
<xs:element name="class">
<xs:complexType>
<xs:sequence>
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Como você pode ver, existePerson
elemento que é compartilhado entre esses dois esquemas. O que eu gostaria de fazer é:
ObjectFactory
classe é compartilhada para ambas as classes de esquema (as classes de saída estarão em um pacote)não use classes estáticas aninhadas (com atributolocalScoping="toplevel"
)usarPerson
classe para ligar com/alpha/persons/person
como com/country/class/person
então não há duas classes Person criadasO propósito disto é desmarcar um xml, aplicando lógica de negócio e criando outro como saída onde alguns elementos (comoPerson
) são iguais e compartilhados para ambos os arquivos xml. O namespace será o mesmo para os dois arquivos.
Eu gostaria de receber se você puder me apresentar um arquivo completo de configurações de ligações .xjb. Até agora, o meu contém apenas:
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc">
<jxb:globalBindings localScoping="toplevel"/>
</jxb:bindings>
E é claro que eu recebo o erro de colisão de nomes, pois não sei como definir o compilador de vinculação para verPerson
como a mesma entidade / elemento.