У меня есть пакетное задание aspring, использующее StaxeventItemWriter, оно отлично работает. Я хочу, чтобы полученный файл XML был отформатирован, как я могу это сделать. есть ли какая-нибудь собственность? это мой ItemWriter, я поместил только соответствующую часть своего кода для упрощения, при необходимости я могу добавить работу с отверстием. спасибо
<bean id = "xmlWriter" class = "org.springframework.batch.item.xml.StaxEventItemWriter">
<property name = "resource" value = "file:src/main/resources/myFile.xml"></property>
<property name = "rootTagName" value = "Users"></property><bean id = "MyMarshaller" class = "org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name = "classesToBeBound">
<list>
<value>model.myModel</value>
</list>
</property>
</bean>
<property name = "marshaller" ref = "MyMarshaller"></property>
</bean>
<bean id = "MyMarshaller" class = "org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name = "classesToBeBound">
<list>
<value>model.myModel</value>
</list>
</property>
</bean>
Вы можете активировать опцию JAXB_FORMATTED_OUTPUT
на marshaller с помощью:
<bean id = "MyMarshaller" class = "org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name = "classesToBeBound">
<list>
<value>model.myModel</value>
</list>
</property>
<property name = "marshallerProperties">
<map>
<entry>
<key>
<util:constant static-field = "javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT" />
</key>
<value type = "java.lang.Boolean">true</value>
</entry>
</map>
</property>
</bean>
для чего нужно пространство имен (пожалуйста, используйте?
Я добавил пространство имен :xmlns:util = "springframework.org/schema/util". но все еще не форматирует файл XML.
Поскольку ваш писатель основан на StAX, проверьте этот stackoverflow.com/questions/290326/stax-xml-formatting-in-java