2016-07-07 4 views
1

私は、別の複合型を含むさまざまな複合型を定義したXSDを持っています。問題は、内部の複合型はまったく同じですが、分離型として定義されていないため、各最上位クラスの内部クラスがあります。 XSDは次のとおりです。JAXB/XSD同一のクラスを統一する

<xs:complexType name="DOCTRACKTCSCREATEType"> 
    <xs:sequence> 
     <xs:element name="DESCRIPTION" type="xs:string" minOccurs="0"/> 
     <xs:element name="gATTRIBNAME" minOccurs="0"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="mATTRIBNAME" minOccurs="0" maxOccurs="unbounded"> 
         <xs:complexType> 
          <xs:sequence> 
           <xs:element name="ATTRIBNAME" type="xs:string" minOccurs="0"/> 
           <xs:element name="ATTRIBVALUE" type="xs:string" minOccurs="0"/> 
          </xs:sequence> 
          <xs:attribute name="m" type="xs:positiveInteger"/> 
         </xs:complexType> 
        </xs:element> 
       </xs:sequence> 
       <xs:attribute name="g" type="xs:positiveInteger"/> 
      </xs:complexType> 
     </xs:element> 
    <xs:attribute name="id" type="xs:string"/> 
</xs:complexType> 

<xs:complexType name="DOCTRACKType"> 
    <xs:sequence> 
     <xs:element name="REFERENCE" type="xs:string" minOccurs="0"/> 
     <xs:element name="gATTRIBNAME" minOccurs="0"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="mATTRIBNAME" minOccurs="0" maxOccurs="unbounded"> 
         <xs:complexType> 
          <xs:sequence> 
           <xs:element name="ATTRIBNAME" type="xs:string" minOccurs="0"/> 
           <xs:element name="ATTRIBVALUE" type="xs:string" minOccurs="0"/> 
          </xs:sequence> 
          <xs:attribute name="m" type="xs:positiveInteger"/> 
         </xs:complexType> 
        </xs:element> 
       </xs:sequence> 
       <xs:attribute name="g" type="xs:positiveInteger"/> 
      </xs:complexType> 
     </xs:element> 
    <xs:attribute name="id" type="xs:string"/> 
</xs:complexType> 

したがって、両方とも同じタイプのgATTRIBNAMEを定義しています。私はXSDを変更することはできませんが、他に同じJavaクラスを作成する方法はありますか?

答えて

0

おそらくJAXBはこの2つの匿名の複合型が異なるとみなし、カスタマイズされたバインディングを使用しても、同じクラスにそれらをマッピングさせたくないため、これを困難にしているようです。

多分、共通のインターフェースを実装しているようなものを試してみたいでしょうか?最後に私はこれを確認しましたが、これはさまざまな拡張機能やプラグインを使ってのみ可能でした(しかし、一部はRI自体にありますので、可用性は問題にならないはずです)。たとえば、older postがあります。最新のものがあります。

カスタマイズされたバインディングを続行しようとすると、何らかの他の関連する考えがあります。 <jxb:globalBindings localScoping="toplevel"/>は、内部クラスではなくトップレベルクラスを生成するのに便利です。これは衝突のためのいくつかの他の可能性を開く、おそらくそうではない。しかし、FYI。

希望があれば、より良い答えを聞くことに興味があります。

関連する問題