Spring 批次:将 xml 读取为 DOM 文档
Spring batch: read xml as DOM Document
我想读取包含 n 个元素 'elem1' 的大型 xml 文件。 n 可以达到 10.000 或更多。我想将每个 eleme1 作为 DOM 文档读取,对其进行处理并读取下一个 elem1 等。
到目前为止我找到的所有文章都建议使用 StaxEventItemReader。但我不想将窥视的 'elem1' 映射到一个对象,而是一个 DOM 文档。原因是,我想要集成到处理器中的业务逻辑已经存在。逻辑处理 DOM 文档(读取节点等)。但是 StaxEventItemReader 期望 class 类型将读取数据映射到。有没有办法像 dom 文档一样读取数据?我在考虑多行记录 reader 并将 open/close 标签定义为分词器。但是我不知道这样是否可行,是否正确?
<root>
<elem1>
<a>...</a>
<b>...</b>
</elem1>
<elem1>
<a>...</a>
<b>...</b>
<c>...</c>
</elem1>
</root>
由于您能够将字符串元素解析为 DOM 对象,因此您可以按如下方式进行:
- 使用
StaxEventItemReader<String>
读取字符串元素
- 使用处理器将字符串项转换为 DOM 项
- 添加另一个处理器(在复合处理器中)以根据需要处理 DOM 项(调用您已有的业务逻辑,它需要 DOM 项)
我想读取包含 n 个元素 'elem1' 的大型 xml 文件。 n 可以达到 10.000 或更多。我想将每个 eleme1 作为 DOM 文档读取,对其进行处理并读取下一个 elem1 等。 到目前为止我找到的所有文章都建议使用 StaxEventItemReader。但我不想将窥视的 'elem1' 映射到一个对象,而是一个 DOM 文档。原因是,我想要集成到处理器中的业务逻辑已经存在。逻辑处理 DOM 文档(读取节点等)。但是 StaxEventItemReader 期望 class 类型将读取数据映射到。有没有办法像 dom 文档一样读取数据?我在考虑多行记录 reader 并将 open/close 标签定义为分词器。但是我不知道这样是否可行,是否正确?
<root>
<elem1>
<a>...</a>
<b>...</b>
</elem1>
<elem1>
<a>...</a>
<b>...</b>
<c>...</c>
</elem1>
</root>
由于您能够将字符串元素解析为 DOM 对象,因此您可以按如下方式进行:
- 使用
StaxEventItemReader<String>
读取字符串元素 - 使用处理器将字符串项转换为 DOM 项
- 添加另一个处理器(在复合处理器中)以根据需要处理 DOM 项(调用您已有的业务逻辑,它需要 DOM 项)