0

根据 Spring Batch 文档,Spring Batch 可以生成格式化的 xml 文件,但是我失败了,所有的 XML 元素都是一行生成的。

测试步骤

  1. 下载 spring-batch-2.1.9.RELEASE-no-dependencies
  2. 导入spring-*-3.2.0.RC1.jar
  3. 导入 jaxb-ri-2.2.6
  4. 运行 org.springframework.batch.sample.iosample.XmlFunctionalTests

在运行作业之前,我对 /spring-batch-2.1.9.RELEASE-no-dependencies/spring-batch-2.1.9.RELEASE/spring-batch-samples/src/main/resources/jobs/iosample 进行以下更改/xml.xml

<bean id="itemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter">
    <property name="resource" ref="outputResource" />
    <property name="marshaller" ref="customerCreditMarshaller2" />
    <property name="rootTagName" value="customers" />
    <property name="overwriteOutput" value="true" />
</bean>
<bean id="customerCreditMarshaller2" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
     <property name="contextPaths">
         <list>
             <value>com.test.domain</value><!-- the package is generated from a XSD -->
         </list>
   </property>
   <property name="marshallerProperties">
        <map>
           <entry key="jaxb.formatted.output"><value type="java.lang.Boolean">true</value></entry>
        </map>
   </property>

4

2 回答 2

1

JAXB API (com.sun.xml.bind.v2.runtime.output.IndentingUTF8XmlOutput) 支持格式化的 XML。

但默认情况下,Spring Batch 不使用 com.sun.xml.bind.v2.runtime.output.IndentingUTF8XmlOutput 来生成输出 XML。

所以我们需要创建一个 StreamResult 让 Spring Batch 使用 com.sun.xml.bind.v2.runtime.output.IndentingUTF8XmlOutput 来生成格式化的 XML。

于 2013-04-07T06:16:26.120 回答
0

我假设您希望 xml 自己阅读。我不知道 Spring Batch,但您可以使用 Notepad++,下载 XML 工具插件,然后使用“Pretty print (XML only - with line breaks)”。这并不理想,但比所有阅读都好。

于 2013-04-03T15:05:26.303 回答