6

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

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

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

我可以为那些获得转换这些字段的特殊 XMLAdapter 的字段指定绑定吗?

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

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

protected JAXBElement<Calendar> dateField;

和相应的xsd-看起来像

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

有人能帮助我吗?

谢谢和最好的问候,

阿恩

4

1 回答 1

1

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

于 2011-10-03T03:29:44.430 回答