Wspólna klasa dla elementu potomnego w JAXB w różnych xmls / root

WJAXB podczas korzystania z automatycznego generowania klasy przezxjc zxsd schemat.

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>

Jak widać, jestPerson element, który jest wspólny dla tych dwóch systemów. Chciałbym zrobić:

generuj klasy przy użyciu xjc w taki sposób, żeObjectFactory klasa jest współużytkowana dla obu klas schematu (klasy wyjściowe będą w jednym pakiecie)nie używaj zagnieżdżonych klas statycznych (z atrybutemlocalScoping="toplevel")posługiwać sięPerson klasa do wiązania/alpha/persons/person jak z/country/class/person więc nie utworzono dwóch klas Person

Celem tego jest unmarshalling jednego xml, zastosowanie logiki biznesowej i utworzenie innego jako wyjścia, w którym niektóre elementy (npPerson) są takie same i współdzielone dla obu plików xml. Przestrzeń nazw będzie taka sama dla obu plików.

Witałbym, gdybyś mógł przedstawić mi kompletny plik ustawień powiązań .xjb. Do tej pory moja zawiera tylko:

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

I oczywiście otrzymuję błąd kolizji nazw, ponieważ nie wiem, jak ustawić kompilator powiązań, aby zobaczyćPerson jako ten sam podmiot / element.

questionAnswers(2)

yourAnswerToTheQuestion