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:dateおよび情報がありません。xs: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 に答える