diff --git a/org.springframework.core/src/main/java/org/springframework/util/xml/StaxUtils.java b/org.springframework.core/src/main/java/org/springframework/util/xml/StaxUtils.java
index 0b87fdf4178..71ce0abbbf1 100644
--- a/org.springframework.core/src/main/java/org/springframework/util/xml/StaxUtils.java
+++ b/org.springframework.core/src/main/java/org/springframework/util/xml/StaxUtils.java
@@ -75,6 +75,39 @@ public abstract class StaxUtils {
}
}
+ /**
+ * Creates a StAX {@link Result} for the given {@link XMLStreamWriter}. Returns a {@link StAXResult} under JAXP 1.4 or
+ * higher, or a {@link StaxResult} otherwise.
+ *
+ * @param streamWriter the StAX stream writer
+ * @return a result wrapping streamWriter
+ */
+ public static Result createStaxResult(XMLStreamWriter streamWriter) {
+ if (JaxpVersion.isAtLeastJaxp14()) {
+ return Jaxp14StaxHandler.createStaxResult(streamWriter);
+ }
+ else {
+ return new StaxResult(streamWriter);
+ }
+ }
+
+ /**
+ * Creates a StAX {@link Result} for the given {@link XMLEventWriter}. Returns a {@link StAXResult} under JAXP 1.4 or
+ * higher, or a {@link StaxResult} otherwise.
+ *
+ * @param eventWriter the StAX event writer
+ * @return a result wrapping streamReader
+ * @throws XMLStreamException in case of StAX errors
+ */
+ public static Result createStaxResult(XMLEventWriter eventWriter) throws XMLStreamException {
+ if (JaxpVersion.isAtLeastJaxp14()) {
+ return Jaxp14StaxHandler.createStaxResult(eventWriter);
+ }
+ else {
+ return new StaxResult(eventWriter);
+ }
+ }
+
/**
* Indicates whether the given {@link javax.xml.transform.Source} is a StAX Source.
*
@@ -252,6 +285,14 @@ public abstract class StaxUtils {
return new StAXSource(eventReader);
}
+ private static Result createStaxResult(XMLStreamWriter streamWriter) {
+ return new StAXResult(streamWriter);
+ }
+
+ private static Result createStaxResult(XMLEventWriter eventWriter) {
+ return new StAXResult(eventWriter);
+ }
+
private static boolean isStaxSource(Source source) {
return source instanceof StAXSource;
}