问题描述
我正在将 univocity 2.9.1 文件解析器用于固定宽度的多模式文本文件。
我使用设置 addFormatForLookahead 方法设置了不同的记录类型。
settings.addFormatForLookahead("11",headerFields);
settings.addFormatForLookahead("12",accountFields);
settings.addFormatForLookahead("13",footerFields);
已为不同的记录类型定义了字段。
我能够在数据良好时解析记录,使用 parseAll 或使用行处理器和 beginParsing/parseNext/stopParsing。
这个问题是当文件包含不正确的数据时,解析器抛出 TextParsingException 并停止解析。 我希望解析器继续解析文件的其余部分。 我看到文档中提到了 RetryableErrorHandler,但我看不到它在这种情况下如何应用。我试过了,没用。
即
settings.setProcessorErrorHandler(new RetryableErrorHandler<ParsingContext>() {
@Override
public void handleError(DataProcessingException error,Object[] inputRow,ParsingContext context) {
//if there's an error in the first column,assign 50 and proceed with the record.
if(error.getColumnIndex() == 0){
setDefaultValue(50);
} else { //else keep the record anyway. Null will be used instead.
keepRecord();
}
}
});
我想我可以用一个全长字段创建一个默认的 FixedWidthField 字段。在这种情况下,如果它不识别页眉、帐户或页脚记录,则它将使用默认字段,并将继续解析未知记录。
请指教。
谢谢, 乙
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)