Spring-Batch - генерация XML с использованием StaxEventItemWriter - вывод файла не отформатирован - PullRequest
0 голосов
/ 12 июня 2019

Я создал модуль записи, который будет записывать данные в файл XML с помощью StaxEventItemWriter.

Я установил свойство 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;
}
...