【问题标题】:Java: JAXB: Marshelling of JAXBElement<Calendar> to xs:date not correctJava:JAXB:将 JAXBElement<Calendar> 编组为 xs:date 不正确
【发布时间】:2011-09-27 16:46:33
【问题描述】:

我在使用 JAXB 时遇到问题。我通过 xjc(使用 xsd 模式)创建了我的 Java 类,并通过解析和打印方法将 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;

和对应的xsd-looks像

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

有人可以帮帮我吗?

谢谢和最好的问候,

阿恩

【问题讨论】:

  • 您确定要首先使用nillable="true"吗?您不能将元素设为可选吗?我从未见过真正需要它,也从未觉得自己错过了它。

标签: java xml jaxb xjc


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 2021-02-16
    • 2018-10-27
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    相关资源
    最近更新 更多