如何使用Spring Batch Delimited Aggregator输出复杂属性

时间:2014-08-06 13:44:17

标签: xml spring-batch

我想处理XML文档并输出逗号分隔的输出。 我通过这个链接使用Spring Batch - http://docs.spring.io/spring-batch/trunk/reference/html/readersAndWriters.html#xmlReadingWriting

具体来说,我使用StaxEventItemReader读取XML并使用FlatFileItemWriter进行配置DelimitedLineAggregator的写入。

我遇到的问题是“fieldExtractor”bean BeanWrapperFieldExtractor会输出 原始属性(即原始值String,int等)。我的一些属性是 复杂的类型。所以使用这个内置的fieldExtractor,我只能打印对象指针 这没用。

这篇文章建议扩展DelimitedLineAggregator以修改字段值 - Spring Batch : PassThroughFieldExtractor with BigDecimal formatting

看起来我必须这样做,并为每个“复杂”字段插入服务。 此服务必须“递归”循环遍历字段对象以生成 逗号分隔的字符串。

这听起来怎么样?你可以分享任何有效的递归算法吗?

由于

更新:谢谢Luca。以下是输入和所需输出的样本(对于发球台来说不准确)

https://drive.google.com/?tab=wo&authuser=2#folders/0BxTBknojMmSVTkJ0TVp5YXg4cjg

1 个答案:

答案 0 :(得分:0)

好吧也许你会更好地使用自定义类扩展FieldExtractor而不是DelimitedLineAggregator。
根据spring,这个类必须将对象转换为可以转换为字符串的小部分。如果你想控制场地的顺序,它会更好。

FieldExtractor: http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/file/transform/FieldExtractor.html