Spring-Batch-使用StaxEventItemWriter的Xml生成-文件的输出格式不正确

时间:2019-06-12 12:11:32

标签: java spring jaxb spring-batch

我创建了编写器,该编写器将使用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;
}

0 个答案:

没有答案