エクスポートされた Google .ics カレンダー ファイルを iCal4j で解析しようとしています。残念ながら、パーサーは特定の値 (00001231T000000Z) で停止し、例外をスローします。私の質問は、悪いデータにもかかわらずパーサーを継続させるにはどうすればよいですか? ソース コードを編集しようとしていますが、日付解析エラーで失敗しないように構成する方法はありません。
私は ical4j-1.0.5-SNAPSHOT を使用しています - これは最新のコードに基づいていると思います。
私のデータには次のイベントが含まれています (これは定期的なイベントのようです):
BEGIN:VEVENT
DTSTART;TZID=America/Vancouver:20101206T060000
DTEND;TZID=America/Vancouver:20101206T150000
RRULE:FREQ=DAILY;UNTIL=20101210T140000Z
DTSTAMP:20121231T143813Z
UID:[deleted]@google.com
CREATED:00001231T000000Z
DESCRIPTION:
LAST-MODIFIED:20110102T020817Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:iCal4j chokes on this
TRANSP:OPAQUE
END:VEVENT
そして、この日付値を解析しようとすると死にます (これはナンセンス/悪い値のようです)
CREATED:00001231T000000Z
作成されたフィールドが設定されているか、ダミーの値に設定されているかは特に気にしません。私が気にしているのは、パーサーが継続し、悪いデータを詰まらせないことです。
解析をリラックスに設定しようとしましたが、どういうわけかこのケースはすり抜けているようです。
CompatibilityHints.setHintEnabled(
CompatibilityHints.KEY_RELAXED_PARSING, true);
では、このコードをより堅牢にしてエラーを解析するにはどうすればよいでしょうか? 独自のパーサーを提供できますか? エラーのあるレコードをスキップすることはできますか?