diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/stax/UnopenedElementClosingEventWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/stax/UnopenedElementClosingEventWriter.java index f380f7150..03ddbe1b6 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/stax/UnopenedElementClosingEventWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/stax/UnopenedElementClosingEventWriter.java @@ -24,7 +24,6 @@ import java.util.List; import javax.xml.namespace.QName; import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.EndElement; import javax.xml.stream.events.XMLEvent; import org.springframework.dao.DataAccessResourceFailureException; @@ -51,18 +50,16 @@ public class UnopenedElementClosingEventWriter extends AbstractEventWriterWrappe @Override public void add(XMLEvent event) throws XMLStreamException { if (isUnopenedElementCloseEvent(event)) { - EndElement endElement = event.asEndElement(); - QName name = endElement.getName(); - String nsPrefix = !StringUtils.hasText(name.getPrefix()) ? "" : name.getPrefix() + ":"; + QName element = unopenedElements.removeLast(); + String nsPrefix = !StringUtils.hasText(element.getPrefix()) ? "" : element.getPrefix() + ":"; try { super.flush(); - ioWriter.write(""); + ioWriter.write(""); ioWriter.flush(); } catch (IOException ioe) { - throw new DataAccessResourceFailureException("Unable to close tag: " + name, ioe); + throw new DataAccessResourceFailureException("Unable to close tag: " + element, ioe); } - unopenedElements.removeLast(); } else { super.add(event); } 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 1246f8d54..52845b423 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 @@ -13,6 +13,7 @@ import java.util.Collections; import java.util.List; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.namespace.QName; import javax.xml.stream.XMLEventFactory; import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLStreamException; @@ -800,7 +801,7 @@ public class StaxEventItemWriterTests { assertEquals("Wrong content: " + content, "" + - "", content); + "", content); } /** @@ -824,7 +825,7 @@ public class StaxEventItemWriterTests { "" + "PRE-HEADERPOST-HEADER" + "" + - "PRE-FOOTERPOST-FOOTER" + + "PRE-FOOTERPOST-FOOTER" + "", content); }