“为什么?”;xsd:日期“;“映射的XML架构类型的类型”;javax.xml.datatype.XMLGregorianCalendar“;当JAXB的模式到Java映射完成时

“为什么?”;xsd:日期“;“映射的XML架构类型的类型”;javax.xml.datatype.XMLGregorianCalendar“;当JAXB的模式到Java映射完成时,xsd,jaxb,marshalling,unmarshalling,Xsd,Jaxb,Marshalling,Unmarshalling,我不知道为什么XML模式类型的“xsd:date”映射到了“javax.XML.datatype.XMLGregorianCalendar”,而JAXB的模式到Java映射却映射到了“javax.XML.datatype.XMLGregorianCalendar” 为什么XML模式类型的“xsd:date”映射为“java.util.date” 我猜JAXB是故意做映射的。 我想知道这个原因 如果存在,如何在不使用注释的情况下将XML模式类型的“xsd:date”更改为java类的“java.u

我不知道为什么XML模式类型的“xsd:date”映射到了“javax.XML.datatype.XMLGregorianCalendar”,而JAXB的模式到Java映射却映射到了“javax.XML.datatype.XMLGregorianCalendar”

为什么XML模式类型的“xsd:date”映射为“java.util.date”

我猜JAXB是故意做映射的。 我想知道这个原因

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


我想在没有所有注释的情况下进行mashalling和unmarshalling。

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

有关更多信息:

    • 有两个原因

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

    • 您好,因为您是新的堆栈溢出,您可能想考虑标记答案为接受。目前,你有10个问题没有被接受的答案。