2011-09-27 22 views
6

我在使用JAXB時遇到問題。我通過xjc(使用xsd-schema)創建了我的Java類,並使用parse和print方法爲XML-Datatypes xs:date xs:dateTime和xs:time綁定了java.util.Calendar。Java:JAXB:JAXBElement的Marshelling <Calendar>到xs:日期不正確

一切工作正常,直到我標記一些xs:日期字段爲可壓縮。 xjc爲這些屬性創建JAXBElement包裝器。如果這些字段被解組,則會打印出日期,包括導致驗證錯誤的時間信息。

是否有可能迫使Marshaller將其轉換爲xs:date而不是xs:dateTime?

我可以爲那些獲取特殊XMLAdapater的字段指定一個綁定來轉換這些字段嗎?

的Java的類內的屬性看起來像這樣:

@XmlElementRef(name = "dateField", namespace = "namespace", type = JAXBElement.class) 

protected JAXBElement<Calendar> dateField; 

和相應的XSD的模樣

<xs:element name="dateField" minOccurs="0" nillable="true" type="xs:date" /> 

有人能幫助我嗎?

感謝和問候,

阿恩

+0

您確定首先需要'nillable =「true」嗎?你不能讓元素可選嗎?我從來沒有見過真正的需要或覺得我錯過了它。 –

回答

1

你真的需要映射的JAXBElement內的日曆?不會是正確使用傳統的XMLGregorianCalendar代替(然後你就可以將其轉換爲一個約會)?