我在使用 JAXB 时遇到问题。我已经通过 xjc(使用 xsd-schema)创建了我的 Java 类,并通过解析和打印方法将 XML 数据类型 xs:date xs:dateTime 和 xs:time 全局绑定(bind)到 java.util.Calendar。
一切正常,直到我将某些 xs:date 字段标记为可为空。 xjc 为这些属性创建 JAXBElement 包装器。如果这些字段被解码,则会打印出日期,包括导致验证错误的时间信息。
是否有可能强制 Marshaller 将其转换为 xs:date 而不是 xs:dateTime?
我能否为那些获取特殊 XMLAdapater 的字段指定一个绑定(bind)来转换这些字段?
Java 类中的属性如下所示:
@XmlElementRef(name = "dateField", namespace = "namespace", type = JAXBElement.class)
protected JAXBElement<Calendar> dateField;
和对应的xsd-looks like
<xs:element name="dateField" minOccurs="0" nillable="true" type="xs:date" />
有人可以帮帮我吗?
谢谢和最好的问候,
阿恩
最佳答案
您真的需要将日历映射到 JAXBElement 中吗?使用旧版是不正确的 XMLGregorianCalendar相反(然后您可以将其转换为日期)?
关于Java:JAXB:JAXBElement<Calendar> 到 xs:date 的编码不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572746/