我已使用SpringBatch
和StaxEventItemWriter
为从数据库表中读取的记录生成XML
文件。我知道,如何将属性添加到根元素,但我不知道,如何为其他元素添加属性。
例如,如何为MarketValue
代码添加“已转换”属性?
<MarketValue converted="true" >5140150.70351</MarketValue>
详细说明:
这就是我要做的事情:从db读取,并填充类AssetInflowReport
(简化):
public class AssetInflowReport
{
private String Currency;
private Double MarketValue;
}
在Springbatch
中,使用以下步骤中的编写器Fbo_assetInflowReport_Writer_xml
生成xml输出文件:
<batch:step id="FBO_extract_assetInflowReport" >
<batch:chunk reader="assetInflowReportItemReader" writer="Fbo_assetInflowReport_Writer_xml" commit-interval="10000" />
Fbo_assetInflowReport_Writer_xml
的定义如下:
<bean id="Fbo_assetInflowReport_Writer_xml"
class="com.rbccm.lrma.batch.writer.IndentingStaxEventItemWriter">
<property name="resource" value="file:${fbo.output.dir}/Fbo_assetInflowReport-${businessDate}.xml" />
<property name="marshaller" ref="assetInflowReportMarshaller" />
</bean>
<bean id="assetInflowReportMarshaller"
class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="aliases">
<util:map id="aliases">
<entry key="assetInflowReport" value="com.rbccm.lrma.batch.model.AssetInflowReport" />
</util:map>
</property>
</bean>
类IndentingStaxEventItemWriter extends org.springframework.batch.item.xml.StaxEventItemWriter
,它生成xml,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<assetInflowReport treasuryControl="true" reportID="1">
<assetInflowReport treasuryControl="true" reportID="1">
<assetInflowReport>
<Currency>USD</Currency>
<MarketValue>5140150.70351</MarketValue>
</assetInflowReport>
问题是,我们需要将一个属性“已转换”添加到<MarketValue>
标记,例如,使其看起来像:
<MarketValue converted="true" >5140150.70351</MarketValue>
选中StaxEventItemWriter
和XStreamMarshaller
;我无法弄明白该怎么做。