2

我目前在尝试从 xml 文件中解组日期时遇到问题。

输入 XML 片段:

<request>
    <head>
        <title>Load data</title>
        <startDate>20130806</startDate>
        <startTime>20130807-055137</startTime>
    </head>
  <request>

startDate 和 startTime 元素在模式文件中分别定义为 xs:date 和 xs:dateTime。

使用 JAXB 解组 xml 文件后,我在我的 java 类的 startDate 标记中得到值,如下所示:

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

输出: Sun Jan 01 00:00:00 IST 20130806

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

4

1 回答 1

2

您的 XML 文档没有适当格式的xs:datexs:dateTime信息。如果应该如下:

<request>
    <head>
        <title>Load data</title>
        <startDate>2013-08-06</startDate>
        <startTime>2013-08-07T05:51:37</startTime>
    </head>
  <request>

如果您想使用替代格式,则需要利用XmlAdapter.

于 2013-09-05T16:40:26.383 回答