diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java index 1ff2040f2..80a89a3f0 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java @@ -316,7 +316,13 @@ public class StaxEventItemWriter extends ExecutionContextUserSupport implements // writer.writeEndDocument(); <- this doesn't work after restart // we need to write end tag of the root element manually + + //harmless event to close the root tag if there were no items + XMLEventFactory factory = XMLEventFactory.newInstance(); + writer.add(factory.createCharacters("")); + writer.flush(); + ByteBuffer bbuf = ByteBuffer.wrap(("").getBytes()); try { channel.write(bbuf); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java index 214332c52..f4d9c104c 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java @@ -163,6 +163,7 @@ public class StaxEventItemWriterTests extends TestCase { assertTrue(outputFileContent().indexOf("") != NOT_FOUND); assertTrue(outputFileContent().endsWith("")); }