0

我正在处理一个由“|”分隔的文本文件 有标题和数据后跟一个预告片。这个序列可以在同一个文件中重复。所以我的格式是这样的

Header|Date - Employer1#|<br>
Employee ID|FirstName|LastName|<br>
Employee ID|FirstName|LastName|<br>
Trailer|2<br>
Header|Date - Employer2#|<br>
Employee ID|FirstName|LastName|<br>
Employee ID|FirstName|LastName|<br>
Employee ID|FirstName|LastName|<br>
Trailer|3<br>

我的问题是,对于每条记录,我创建的行对象必须具有标题中的雇主 #。在阅读下一个标题时,后面的所有行都应该有新的雇主 #。我正在使用 Spring Batch 和 FlatFileItemReader 来解析这个文件。我有一个自定义线映射器,我可以在其中确定该线是 HEADER 还是数据,但我不确定如何存储标题数据,以便在读取数据线时可以访问先前读取的 HEADER

@Override
    public MyDTO mapLine(String line, int lineNumber) throws Exception { 
        if(line != null && line.contains("HEADER")) {
            String[] tokenizedHeader = line.split("|");
            //Code to parse Header and save that data
            }else {
            DelimitedLineTokenizer delimitedLineTokenizer = new DelimitedLineTokenizer();
            delimitedLineTokenizer.setDelimiter("|");   
            delimitedLineTokenizer.setStrict(false);
            delimitedLineTokenizer.setNames(new String[] {"EMPLOYEE ID","FIRST NAME","LAST NAME"});
            setLineTokenizer(delimitedLineTokenizer);
            setFieldSetMapper(myFieldSetmapper);            
            return (MyDTO) this.fieldSetMapper.mapFieldSet(this.lineTokenizer.tokenize(line));
        }
    }

任何线索将不胜感激。
谢谢

4

0 回答 0