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>