我创建了编写器,该编写器将使用StaxEventItemWriter将数据写入XML文件。
我已经设置了Marshaller.JAXB_FORMATTED_OUTPUT = true的属性,但仍然无法以格式化的方式获取输出。它以一种行格式显示完整文件。
是否可以使用StaxEventItemWriter以格式化的方式获取输出?
我已经附上了我的作者代码。
@StepScope
StaxEventItemWriter<App> databaseXmlItemWriter(@Value ("#{jobExecutionContext['FileName']}") String fileName) {
StaxEventItemWriter<App> xmlFileWriter = new StaxEventItemWriter<App>();
xmlFileWriter.setResource(new FileSystemResource(fileName));
Jaxb2Marshaller acesMarshaller = new Jaxb2Marshaller();
acesMarshaller.setClassesToBeBound(App.class);
acesMarshaller.setMarshallerProperties(Collections.singletonMap(Marshaller.JAXB_FORMATTED_OUTPUT,true));
xmlFileWriter.setMarshaller(acesMarshaller);
xmlFileWriter.setRootTagName(RootTagName);
xmlFileWriter.setShouldDeleteIfEmpty(true);
xmlFileWriter.setRootElementAttributes(Collections.singletonMap("version", "3.0"));
final XMLEventFactory factory = XMLEventFactory.newInstance();
xmlFileWriter.setHeaderCallback(new StaxWriterCallback() {
@Override
public void write(XMLEventWriter writer) throws IOException {
try {
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
});
xmlFileWriter.setFooterCallback(new StaxWriterCallback() {
@Override
public void write(XMLEventWriter writer) throws IOException {
XMLEventFactory factory = XMLEventFactory.newInstance();
}
});
return xmlFileWriter;
}