春季批:多位作家

时间:2018-09-04 16:32:16

标签: spring spring-batch

我有一个XML输入文件(很大),必须按以下方式处理:

  • 从xml文件读取每个项目X
  • 对于每个项目X更改一些字段(此类更新的X将表示为X')
  • 将所有更新的X'项目写入新文件
  • 将每个项目X'转换为新对象Y
  • 将每个变换后的Y对象写入其他新文件

由于输入/输出文件很大,因此我使用StaxItemReader和StaxItemWriter来读取/写入文件。同时,我实现了ComposedItemProcessor,它将X转换为X',然后将X'转换为Y。问题是:我如何轻松地使用StaxItemWriter来编写X和Y?

最简单的方法是分两个步骤进行处理:

  • 从文件读取->转换为X'->将X'保存到文件UPDATED_X.xml
  • 读取文件UPDATED_X.xml->转换为Y->将Y保存到文件Y.xml

但我想避免不必要的解析。是否可以分派作业并同时写入X'和Y?

1 个答案:

答案 0 :(得分:0)

  

与此同时,我实现了ComposedItemProcessor,它将X转换为X',然后将X'转换为Y。问题是:我如何轻松地使用StaxItemWriter来编写X'和Y?

在这种情况下,ComposedItemProcessor的输入项目的类型为X,输出为Y。Y是送至项目编写器的项目类型。因此,您的项目编写者将无法编写X'个项目。

根据您的要求,write all updated X' items to new filetransform each item X' to some new object Y是使您的步骤相互依赖的原因。因此,我想您需要按照提到的两个步骤进行操作。