2011-07-04 6 views
1

私は、サードパーティプロバイダからのスキーマ宣言を持っています。カスタムバインドを強制的にインナークラス作成またはgetter/setter for xs:element

<xs:complexType name="GroupParameterType"> 
     <xs:sequence minOccurs="0" maxOccurs="4"> 
      <xs:element name="name" type="xs:string"> 
       <xs:annotation> 
        <xs:documentation>The name of the parameter.</xs:documentation> 
       </xs:annotation> 
      </xs:element> 
      <xs:element name="value" type="xs:string"> 
       <xs:annotation> 
        <xs:documentation>The value of the parameter.</xs:documentation> 
       </xs:annotation> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 

上記は私が変更できないスキーマです。私はjaxb 2.0のカスタムバインディングを記述して、GroupParameterType.NameまたはGroupParameterType.Valueという名前をjavaコードで参照できるようにしようとしています。

現在のデフォルトのバインディングは、私のためのリスト、すなわちgetNameandValueListを生成しますが、名前と値のそれぞれに別々のゲッターとセッターが必要です。

私は、次のようにカスタムバインディングを入れてみました:

<jxb:bindings schemaLocation="GroupParameter.xsd" node="xs:element[@name='name']"> 
    <jxb:globalBindings localScoping="toplevel" generateIsSetMethod="true"/> 
</jxb:bindings> 
<jxb:bindings schemaLocation="GroupParameter.xsd" node="xs:element[@name='value']"> 
    <jxb:globalBindings localScoping="toplevel" generateIsSetMethod="true"/> 
</jxb:bindings> 

、それはデフォルトのクラスの生成を変更するために何もしませんでした。誰も私に次の何を試すことができるようにいくつかのポインタを私に与えることができますか?私は名前と値のgetters/setterと一緒にデフォルトのリスト生成を持っているか、内部クラスとして名前と値を持っています。 maxOccurs = 4オプションを削除した場合、getters/setterを生成できますが、スキーマを変更できないため、外部バインディングファイルを使用してその動作を取得しようとしています。

おかげ SHON

答えて

0

あなたのスキーマを変更しない限り、あなたは、この動作を取得することはできません。異種の要素プロパティにマップするスキーマモデルがあり、カスタマイズで変更することはできません。

最後の退去としてcode injection pluginを試すことができます。

関連する問題