2013-04-03 41 views
0

根據Spring Batch文檔,Spring Batch可以生成格式化的xml文件,但是我失敗了,所有XML元素都在一行中生成。我無法使用Jaxb2Marshaller生成格式化的XML

試驗步驟

  1. 下載彈簧批次2.1.9.RELEASE,無依賴性
  2. 進口彈簧 - * - 3.2.0.RC1.jar
  3. 導入JAXB-RI-2.2 0.6
  4. 運行org.springframework.batch.sample.iosample.XmlFunctionalTests

運行工作之前,我就/spring-batch-2.1.9.RELEASE-no-dependen更改下方資本投資者入境計劃/彈簧批量2.1.9.RELEASE /彈簧批次在samples/src /主/資源/職位/ 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> 

+0

[如何從jaxb中獲取格式化的xml輸出在春天?](http://stackoverflow.com/questions/4882988/how-to-get-formatted-xml-output-from-jaxb-in-春天) –

回答

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。

+0

我知道這是一個老話題,但是您能否提供xml配置來聲明StreamResult和/或IndentingUTF8XmlOutput? – fluminis

0

我假設你想要的XML閱讀你自己。我不知道關於spring批處理的問題,但是您可以使用Notepad ++,下載XML工具插件,然後使用「漂亮打印(僅限XML - 帶換行符)」。 這並不理想,但比一行中的所有內容都讀得更好。

+0

嗨Danielson,謝謝你的回覆,我想用spring批處理來寫格式化的xml文件,但只能生成一行xml內容。 – Weber