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; }