diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/support/SaajXmlReader.java b/core/src/main/java/org/springframework/ws/soap/saaj/support/SaajXmlReader.java
index 23341a07..88dd9160 100644
--- a/core/src/main/java/org/springframework/ws/soap/saaj/support/SaajXmlReader.java
+++ b/core/src/main/java/org/springframework/ws/soap/saaj/support/SaajXmlReader.java
@@ -22,7 +22,6 @@ import javax.xml.soap.Node;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.Text;
-import org.springframework.xml.sax.AbstractXmlReader;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -30,6 +29,9 @@ import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.helpers.AttributesImpl;
+import org.springframework.util.StringUtils;
+import org.springframework.xml.sax.AbstractXmlReader;
+
/**
* SAX XMLReader that reads from a SAAJ Node. Consumes XMLEvents from an
* XMLEventReader, and calls the corresponding methods on the SAX callback interfaces.
@@ -176,9 +178,17 @@ public class SaajXmlReader extends AbstractXmlReader {
for (Iterator iterator = element.getNamespacePrefixes(); iterator.hasNext();) {
String prefix = (String) iterator.next();
String namespaceUri = element.getNamespaceURI(prefix);
- attributes.addAttribute("", "", "xmlns:" + prefix, "CDATA", namespaceUri);
+ String qName;
+ if (StringUtils.hasLength(prefix)) {
+ qName = "xmlns:" + prefix;
+ }
+ else {
+ qName = "xmlns";
+ }
+ attributes.addAttribute("", "", qName, "CDATA", namespaceUri);
}
}
+
return attributes;
}