Java 使用JAXB将XML文件中的日期解组到XMLGregorianCalendar

Java 使用JAXB将XML文件中的日期解组到XMLGregorianCalendar,java,xml,unmarshalling,jaxb2,Java,Xml,Unmarshalling,Jaxb2,我当前在尝试从xml文件中解组日期时遇到了一个问题 输入XML片段: <request> <head> <title>Load data</title> <startDate>20130806</startDate> <startTime>20130807-055137</startTime> </head> <re

我当前在尝试从xml文件中解组日期时遇到了一个问题

输入XML片段:

<request>
    <head>
        <title>Load data</title>
        <startDate>20130806</startDate>
        <startTime>20130807-055137</startTime>
    </head>
  <request>
输出: Sun Jan 01 00:00:00 IST 20130806


我调试了代码,发现值20130806保存在XMLGregorianCalendar的年份变量中。我不太清楚为什么会发生这种情况,但一个可能的原因可能是XMLGregorianCalendar需要以特定格式显示日期。如何解组startDate标记以正确获取日期值,而无需编写适配器,也无需事先知道输入日期格式?

您的XML文档没有相应格式的
xs:date
xs:dateTime
信息。如果出现以下情况:


加载数据
2013-08-06
2013-08-07T05:51:37
如果要使用备用格式,则需要利用
XmlAdapter

XMLGregorianCalendar xcal = request.getHead().getStartDate();
Date date =  xcal.toGregorianCalendar().getTime();
System.out.println(date);