我有 3 个模式,每个模式都有 xs:dateTime。为了在 java jaxb 对象中将 xs:dateTime 表示为 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。我有一个要求,在其中一个模式(比如 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>