2015-11-10 16 views
2

我與XSD模式文件的工作(即我不能改變),該元件XXX定義如下:JAXB定製爲特定的場

<xsd:element name="XXX" type="Date" minOccurs="0"/>
這產生了java.util.Date在生成的類中。

我需要改變字段是如何整理到XML:如果屬性爲null,我想產生一個空的標籤,就像如果XSD是:

<xsd:element name="XXX" type="Date" minOccurs="0" nillable=true/>
這產生的JAXBElement生成的類。

是否有可能通過Jaxb綁定來做這樣的事情?

問候
朱利奧

回答

3

建議:

  • 處理前的模式使用XSLT添加nillable在你需要它。
  • 使用jaxb2-simplify-plugin並使用simplify:as-reference-property自定義您的元素。我其實從來沒有嘗試過,但也許它會工作。
  • 編寫一個XJC插件。

ps。我是提到的jaxb2-simplify-plugin的作者。

+0

我應用XSLT轉換使用maven XML插件,它工作:)我沒有嘗試與您的插件,因爲第一個選項立即工作 –

2

是的,你可以..但不是一個好的做法。

<bindings node="//xs:element[@name='XXX']"> 
    <property name="xxx"> 
     <baseType> 
      <javaType name= "javax.xml.bind.JAXBElement&lt;java.util.Date&gt;"/> 
     </baseType> 
    </property> 
</bindings> 

你應該增加也低於屬性中<javaType>See here Documentation

  • parseMethod是在 解組被稱爲解析方法的名稱。
  • printMethod是在編組過程中調用的打印方法的名稱,即 。
+0

我試着玩一點你的解決方案,但對我來說這太複雜了,使其工作(我還需要添加一些Java代碼,使其工作)。無論如何;) –