Java:JAXB:JAXBElement的编组致 xs:日期不正确

发布于 2024-12-06 19:11:41 字数 708 浏览 0 评论 0原文

我在使用 JAXB 时遇到问题。我通过 xjc (使用 xsd-schema)创建了 Java 类,并通过解析和打印方法将 XML 数据类型 xs:date xs:dateTime 和 xs:time 全局绑定到 java.util.Calendar。

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

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

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

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" />

有人能帮我吗?

谢谢并致以最诚挚的问候,

阿恩

I have a problem using JAXB. I've created my Java Classes via xjc (using an xsd-schema) and has a global binding for the XML-Datatypes xs:date xs:dateTime and xs:time to java.util.Calendar with parse and print method.

Everything works fine until I marked some xs:date fields as nillable. The xjc creates JAXBElement wrappers for those properties. If these fields get unmarshaled the date is printed out including the time information which leads to validation errors.

Is there a possibilty to force the Marshaller to convert it to xs:date instead of xs:dateTime?

Can I specify a binding for those fields which gets a special XMLAdapater ewhich converts those fields?

The property inside the Java-Class looks like that:

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

protected JAXBElement<Calendar> dateField;

and the corresponding xsd-looks like

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

Can someone help me please?

Thanks and best regards,

Arne

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魔法少女 2024-12-13 19:11:41

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

Do you really need to map the Calendar inside a JAXBElement?, wouldn't be correct to use the legacy XMLGregorianCalendar instead (and then you can convert it to a Date)?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文