2012-05-16 37 views
1

我有3個模式,每個模式都有xs:dateTime。爲了表示的xs:日期時間爲java.util.Date在java中的JAXB對象,我使用binding.xjb看起來如下我們可以強制執行jaxb globalbindings的映射來映射xs:dateTime到java.util.Date

<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:日期時間元素represeted如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> 

回答

1

只要使用不同的綁定文件不同模式的人。使用一個用於沒有xs:dateTime定製的schema1.xsd,另一個用於其他具有它的模式。

+1

此刻,所有文件(schema1.xsd,schema2.xsd,schema3.xsd, binding.xjb)位於同一個文件夾中,我使用maven插件生成jaxb對象 – nagendra

+0

@nagendra:因此,要麼將它們移動到不同的目錄中,要麼告訴Maven插件爲每個模式使用不同的綁定文件,或者停止使用行家。其中一種選擇必須是可能的。 – skaffman