如何处理整个xml,然后返回片段

时间:2018-10-29 05:42:18

标签: spring-batch etl

我有以下类似的xml用于etl处理

DataTable

如果对fragmentRootElementName使用 PMMOResult ,则无法访问startTime属性。

如果我将 OMes 用作fragmentRootElementName,则我只有一项要写

如何覆盖StaxEventItemReader以使用OMeS作为fragmentRootElementName读取整个文档,然后访问PMMOResult标签下的所有嵌套元素,进行一些更改并返回为List?

1 个答案:

答案 0 :(得分:0)

那是不可能的。 StaxEventItemReader一次只能读取一种类型(从项读取器的基本合同中:ItemReader<T>)。可以将fragmentRootElementName设置为PMSetup以获取startTime属性,但是最终会在内存中有一个巨大的PMSetup元素项,并且所有PMMOResult子元素元素,这不是您想要的。

所以我建议分两步进行:

  • 步骤1:使用Tasklet从“标头”元素中获取所需的任何元数据(并在需要时通过步骤执行上下文将其传递到步骤2)
  • 第2步:通过在PMMOResult中将fragmentRootElementName设置为PMMOResult,使用面向块的Tasklet处理块中的StaxEventItemReader元素

希望这会有所帮助。