使用SpringBatch和StaxEventItemWriter生成xml文件,如何为元素编写属性?

时间:2016-07-19 20:33:41

标签: xml spring-batch

我已使用SpringBatchStaxEventItemWriter为从数据库表中读取的记录生成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>

选中StaxEventItemWriterXStreamMarshaller;我无法弄明白该怎么做。

0 个答案:

没有答案