Google calendar api 如何使iCal4j在解析错误时不失败(如0000121T0000000Z)
我试图让iCal4j解析导出的Google.ics日历文件。不幸的是,解析器阻塞了特定值(000012311000000z)并抛出异常。我的问题是,如何让解析器在数据不好的情况下继续运行?我即将编辑源代码,但没有办法将其配置为不会在日期解析错误时失败 我使用的是ical4j-1.0.5-SNAPSHOT,我相信这是基于最新的代码 我的数据包含以下事件(似乎是重复发生的事件): 当它试图解析这个日期值(这似乎是一个胡说八道/糟糕的值)时,它就死了 我并不特别关心创建的字段是设置还是设置为伪值。我关心的是解析器继续运行,而不是阻塞坏数据 我曾尝试将解析设置为放松,但不知何故,这种情况似乎没有发生Google calendar api 如何使iCal4j在解析错误时不失败(如0000121T0000000Z),google-calendar-api,ical4j,Google Calendar Api,Ical4j,我试图让iCal4j解析导出的Google.ics日历文件。不幸的是,解析器阻塞了特定值(000012311000000z)并抛出异常。我的问题是,如何让解析器在数据不好的情况下继续运行?我即将编辑源代码,但没有办法将其配置为不会在日期解析错误时失败 我使用的是ical4j-1.0.5-SNAPSHOT,我相信这是基于最新的代码 我的数据包含以下事件(似乎是重复发生的事件): 当它试图解析这个日期值(这似乎是一个胡说八道/糟糕的值)时,它就死了 我并不特别关心创建的字段是设置还是设置为伪值。我关
CompatibilityHints.setHintEnabled(
CompatibilityHints.KEY_RELAXED_PARSING, true);
那么,我怎样才能使这段代码更健壮地解析错误呢?我可以提供自己的解析器吗?我可以让它跳过有错误的记录吗?我复制了CalendarBuilder类,并用try/catch包装了属性集方法,如下所示。我仍然有兴趣听到其他解决方案。我真的不喜欢复制整个类来修复这样的问题
public void propertyValue(final String value)
throws URISyntaxException, ParseException, IOException {
assertProperty(property);
try {
if (property instanceof Escapable) {
property.setValue(Strings.unescape(value));
} else {
property.setValue(value);
}
} catch (Exception e) {
Logger.warn("Could not set propety: " + property.getName()
+ " to " + value);
}
}
你有没有试过把这些都放在一起
ical4j.unfolding.relaxed=true
ical4j.parsing.relaxed=true
ical4j.validation.relaxed=true
ical4j.compatibility.outlook=true
这实际上是一种倒退。轻松解析应该涵盖这种情况。我刚刚在branch和tip()中都修复了它。我只是尝试了这些,但仍然没有解决解析异常错误。尽管如此,还是感谢您的建议。1.0.5版的夜间睡眠可在以下位置获得:
public void propertyValue(final String value)
throws URISyntaxException, ParseException, IOException {
assertProperty(property);
try {
if (property instanceof Escapable) {
property.setValue(Strings.unescape(value));
} else {
property.setValue(value);
}
} catch (Exception e) {
Logger.warn("Could not set propety: " + property.getName()
+ " to " + value);
}
}
ical4j.unfolding.relaxed=true
ical4j.parsing.relaxed=true
ical4j.validation.relaxed=true
ical4j.compatibility.outlook=true