春季批处理:将xml作为DOM文档读取

时间:2020-07-04 14:09:31

标签: xml dom spring-batch

我想读取一个大型xml文件,其中包含n个元素“ elem1”。 n可以高达10.000或更多。我想将每个eleme1阅读为DOM文档,对其进行处理并阅读下一个elem1等。 到目前为止,我发现的所有文章都建议使用StaxEventItemReader。但是我不想将偷看的“ elem1”映射到对象,而是DOM文档。原因是,我已经准备好将要集成在处理器中的业务逻辑存在。该逻辑使用DOM文档(读取节点等)进行处理。但是StaxEventItemReader希望使用一个类类型将读取的数据映射到该类。有什么方法可以像dom文档一样读取数据?我当时正在考虑使用多行记录读取器,并将打开/关闭标签定义为tokenizer。但是我不知道这是否可行,是否正确?

 <root>
    <elem1>
        <a>...</a>
        <b>...</b>
    </elem1> 

    <elem1>
        <a>...</a>
        <b>...</b>
        <c>...</c>
    </elem1> 

</root>

1 个答案:

答案 0 :(得分:0)

由于您可以将字符串元素解析为DOM对象,因此可以按以下步骤进行操作:

  • 使用StaxEventItemReader<String>读取字符串元素
  • 使用处理器将字符串项目转换为DOM项目
  • 添加另一个处理器(在复合处理器中)以根据需要处理DOM项(调用您已经拥有并且需要DOM项的业务逻辑)