如何使iCal4j在解析错误时不失败(如00001231T000000Z)

Tom*_*rae 0 google-calendar-api ical4j

我想让iCal4j解析导出的Google .ics日历文件.不幸的是,解析器在特定值(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
Run Code Online (Sandbox Code Playgroud)

当它试图解析这个日期值(这似乎是一个无意义/坏的值)时死掉

CREATED:00001231T000000Z
Run Code Online (Sandbox Code Playgroud)

如果创建的字段已设置或设置为虚拟值,我并不特别在意.我关心的是解析器继续而不是窒息坏数据.

我已经尝试将解析设置为放松,但不知何故,这种情况似乎无法解决.

        CompatibilityHints.setHintEnabled(
            CompatibilityHints.KEY_RELAXED_PARSING, true);
Run Code Online (Sandbox Code Playgroud)

那么,如何使这段代码更加健壮以解析错误呢?我可以提供自己的解析器吗?我可以让它跳过有错误的记录吗?

Arn*_*aud 5

这实际上是回归.轻松解析应该涵盖这种情况.只需在分支和提示中修复它(http://ical4j.hg.sourceforge.net/hgweb/ical4j/ical4j/rev/8c23205afac9).