为什么XML Schema Type的“xsd:date”映射为“javax.xml.datatype.XMLGregorianCalendar”当JAXB的Schema-to-Java映射时

时间:2010-12-24 10:09:58

标签: xsd jaxb marshalling unmarshalling

我不知道为什么XML Schema Type的“xsd:date”映射到“javax.xml.datatype.XMLGregorianCalendar”时JAXB的Schema-to-Java Mapping。

为什么XML Schema Type的“xsd:date”映射为“java.util.Date”?

我猜JAXB故意进行映射。 我想知道原因,如果有的话。

如果存在,如何在不使用注释的情况下将XML Schema Type的“xsd:date”更改为Java类的“java.util.Date”(例如@ XmlJavaTypeAdapter)。

我想在没有所有注释的情况下进行编组和解组。

2 个答案:

答案 0 :(得分:1)

从Java类开始时,您可以使用任何“date”数据类型。从XML模式开始时将生成XMLGregorianCalendar,因为它会保留所有时态信息(包括时区)。当然,您始终可以修改生成的对象或注释架构以生成不同的类型。

了解更多信息:

答案 1 :(得分:1)

几个原因

  1. java.util.Date不处理TimeZone的
  2. 这样它就可以处理内置Calendar类无法处理的ISO 8601日期时间格式。例如,月份是1-12,但是在日历/日期0-12中。有时在查询时你可能希望第一个月为1而不是0。