1

3 つのスキーマがあり、それぞれに xs:dateTime があります。xs:dateTime を Java jaxb オブジェクトの java.util.Date として表すために、以下のような binding.xjb を使用しています。

<bindings schemaLocation="schema1.xsd">
    <schemaBindings>
        <package name="com.mycompany.ims.schema1" />
    </schemaBindings>
</bindings> 
<bindings schemaLocation="schema2.xsd">
    <schemaBindings>
        <package name="com.mycompany.ims.schema2" />
    </schemaBindings>
</bindings> 
<bindings schemaLocation="schema3.xsd">
    <schemaBindings>
        <package name="com.mycompany.ims.schema3" />
    </schemaBindings>
</bindings>     

 <globalBindings>
    <javaType name="java.util.Date" xmlType="xs:dateTime"
      parseMethod="com.mycompany.ims.utils.JaxbDateAdapter.parseDateTime"
      printMethod="com.mycompany.ims.utils.JaxbDateAdapter.printDateTime"
    />
    <javaType name="java.util.Date" xmlType="xs:date"
      parseMethod="com.mycompany.ims.utils.JaxbDateAdapter.parseDate"
      printMethod="com.mycompany.ims.utils.JaxbDateAdapter.printDate"
    />
</globalBindings> 

jaxb オブジェクトを生成すると、すべての xs:dateTime 要素が java.util.Date として再設定されます。スキーマの 1 つ (schema1.xsd など) で、xs:dateTime 要素を java.util.Date として表現したくないという要件があります。

特定のスキーマまたはノード名に基づいて制限するように構成できる方法はありますか? 誰でも助けることができますか。

以下のxjb構成を追加して問題を解決しました。投稿を編集して、私のような同じ問題に直面した人々を支援しました

<bindings schemaLocation="schema1.xsd">
    <bindings node="//xs:complexType[@name='ApplicationHeader1']">
        <bindings node=".//xs:element[@name='CreDt']">
          <javaType name="java.util.Date" 
          parseMethod="com.mycompany.ims.utils.JaxbDateAdapter.parseUTCDateTime"
          printMethod="com.mycompany.ims.utils.JaxbDateAdapter.printUTCDateTime"
            />
        </bindings>
    </bindings> 
    <bindings node="//xs:complexType[@name='ApplicationHeaderV01']">
        <bindings node=".//xs:element[@name='CreDt']">
          <javaType name="java.util.Date" 
          parseMethod="com.mycompany.ims.utils.JaxbDateAdapter.parseUTCDateTime"
          printMethod="com.mycompany.ims.utils.JaxbDateAdapter.printUTCDateTime"
            />
        </bindings>
    </bindings>
</bindings>
4

1 に答える 1

1

スキーマごとに異なるバインディング ファイルを使用するだけです。xs:dateTime カスタマイズを持たない schema1.xsd 用に 1 つを使用し、それを含む他のスキーマ用に別のものを使用します。

于 2012-05-16T16:35:38.100 に答える