2011-10-12 106 views
2

我目前正在使用JaxB來處理xml信息的讀取/寫入的Java代碼。它填充整個程序中使用的Java類。在某些時候,該類被整理並寫回到xml中。我沒有這個問題,而且事情按預期運作。JaxB輸出格式?

我很好奇的是,如果有一種方法可以改變JaxB如何寫出浮點數的格式。舉例來說,我使用的XML架構的部分包括以下內容節選:

. 
. 
<xs:element name="myObfuscatedValue"> 
    <xs:complexType> 
    <xs:simpleContent> 
     <xs:extension base="xs:double"> 
     <xs:attrbute name="myObfuscatedValue__comment" type="comment" use="optional" /> 
     </xs:extension> 
    </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 
. 
. 

所以,當我解組,「myObfuscatedValue」基本上進來作爲一個雙。然後我有一個圍繞JaxB生成的類的包裝類,允許用戶通過標準的setter/getters訪問/修改變量。編組回來也很好。

我還想要做的就是讓JaxB以特定的數字格式(類似於「0.0000E00」這樣的DecimalFormat類似的東西寫出來)這是否可以輕鬆完成?我已經被反彈到幾種不同的資源關於如何做到這一點,但我承認我對xml/schemas/JaxB的知識並不是最新的。有沒有辦法改變xjc調用來做到這一點?如果可能的話,我想避免在可能的情況下更改模式文件(它使用不同語言的多個代碼,並且我必須明白,如果改變它會破壞任何這些代碼的第一個)。

任何幫助,在這個問題上的見解或建議,將不勝感激。

回答

1

您可以使用XmlAdapter來自定義如何用XML表示值。下面是一個例子演示瞭如何使用XmlAdapter,如果你是從XmlSchema將產生一個對象模型:當你從Java類開始

下面是使用XmlAdapter另一個例子:

+1

Blaise。我今天無法投入工作,但我會明天嘗試你的方法,並在病房後繼續工作。感謝您的答覆。 –

+0

布萊斯,感謝您的資源!使用你的教程,我能夠讓事情按照我的意願行事。我唯一的評論是,儘管我最終使用了一個外部綁定文件,正如您的示例所示,但我無法將其限制爲特定的元素。但是,我能夠創建一個全局綁定(最終可以達到我的目的)完成同樣的任務。當我試圖限制它到一個特定的元素時,例如在你的例子中,我開始從xjc接收NullPointerExceptions。 –