我正在尝试让 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
并在尝试解析此日期值时死掉(这似乎是胡说八道/错误的值)
CREATED:00001231T000000Z
我并不特别关心创建的字段是否已设置或设置为虚拟值。我关心的是解析器继续运行并且不会因错误数据而窒息。
我尝试将解析设置为放松,但不知何故,这种情况似乎漏掉了。
CompatibilityHints.setHintEnabled(
CompatibilityHints.KEY_RELAXED_PARSING, true);
那么,我怎样才能让这段代码更健壮地解析错误呢?我可以提供自己的解析器吗?我可以让它跳过有错误的记录吗?