Java:JAXB:JAXBElement的Marshelling <Calendar>到xs:date不正确

use*_*604 6 java xml jaxb xjc

我使用JAXB时遇到问题.我已经通过xjc(使用xsd-schema)创建了我的Java类,并且使用parse和print方法为XML-Datatypes xs:date xs:dateTime和xs:time设置了一个全局绑定到java.util.Calendar.

一切正常,直到我将一些xs:date字段标记为nillable.xjc为这些属性创建JAXBElement包装器.如果这些字段被解组,则打印出日期,包括导致验证错误的时间信息.

是否有可能迫使Marshaller将其转换为xs:date而不是xs:dateTime?

我是否可以为那些获取特殊XMLAdapater的字段指定绑定,以便转换这些字段?

Java-Class中的属性如下所示:

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

protected JAXBElement<Calendar> dateField;
Run Code Online (Sandbox Code Playgroud)

和相应的xsd看起来像

<xs:element name="dateField" minOccurs="0" nillable="true" type="xs:date" />
Run Code Online (Sandbox Code Playgroud)

有谁可以帮助我吗?

谢谢和最好的问候,

阿恩

Tim*_*nce 1

您真的需要在 JAXBElement 中映射日历吗?使用旧版XMLGregorianCalendar代替(然后您可以将其转换为日期)是不正确的吗?