用于解析固定宽度多模式文本文件的 Univocity 错误处理程序

问题描述

我正在将 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 (将#修改为@)