【问题标题】:Why does "xsd:date" of XML Schema Type mapped "javax.xml.datatype.XMLGregorianCalendar" When Schema-to-Java Mapping of JAXB does为什么当 JAXB 的 Schema-to-Java Mapping 时 XML Schema Type 的“xsd:date”映射了“javax.xml.datatype.XMLGregorianCalendar”
【发布时间】:2011-05-30 08:45:36
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您好,由于您是 Stackoverflow 的新手,您可能需要考虑将答案标记为已接受。目前您有 10 个问题没有被接受的答案。

标签: xsd jaxb marshalling unmarshalling


【解决方案1】:

几个原因

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

【讨论】:

    【解决方案2】:

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

    更多信息:

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      相关资源
      最近更新 更多