Author: bodewig Date: Mon Dec 19 20:50:14 2005 New Revision: 357908 URL: http://svn.apache.org/viewcvs?rev=357908&view=rev Log: better deal with elements that don't have a namespace URI
Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/DOMElementWriter.java Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/DOMElementWriter.java URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/util/DOMElementWriter.java?rev=357908&r1=357907&r2=357908&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/util/DOMElementWriter.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/util/DOMElementWriter.java Mon Dec 19 20:50:14 2005 @@ -33,6 +33,7 @@ /** * Writes a DOM tree to a given Writer. + * warning: this utility currently does not declare XML Namespaces. * <p>Utility class used by [EMAIL PROTECTED] org.apache.tools.ant.XmlLogger * XmlLogger} and * org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter @@ -278,7 +279,8 @@ // Write element out.write("<"); if (namespacePolicy.qualifyElements) { - String prefix = (String) nsPrefixMap.get(element.getNamespaceURI()); + String uri = getNamespaceURI(element); + String prefix = (String) nsPrefixMap.get(uri); if (prefix == null) { if (nsPrefixMap.isEmpty()) { // steal default namespace @@ -286,8 +288,8 @@ } else { prefix = NS + (nextPrefix++); } - nsPrefixMap.put(element.getNamespaceURI(), prefix); - addNSDefinition(element, element.getNamespaceURI()); + nsPrefixMap.put(uri, prefix); + addNSDefinition(element, uri); } if (!"".equals(prefix)) { out.write(prefix); @@ -302,12 +304,12 @@ Attr attr = (Attr) attrs.item(i); out.write(" "); if (namespacePolicy.qualifyAttributes) { - String prefix = - (String) nsPrefixMap.get(attr.getNamespaceURI()); + String uri = getNamespaceURI(attr); + String prefix = (String) nsPrefixMap.get(uri); if (prefix == null) { prefix = NS + (nextPrefix++); - nsPrefixMap.put(attr.getNamespaceURI(), prefix); - addNSDefinition(element, attr.getNamespaceURI()); + nsPrefixMap.put(uri, prefix); + addNSDefinition(element, uri); } out.write(prefix); out.write(":"); @@ -370,10 +372,9 @@ // Write element close out.write("</"); - if (namespacePolicy.qualifyElements - || namespacePolicy.qualifyAttributes) { - String prefix = - (String) nsPrefixMap.get(element.getNamespaceURI()); + if (namespacePolicy.qualifyElements) { + String uri = getNamespaceURI(element); + String prefix = (String) nsPrefixMap.get(uri); if (prefix != null && !"".equals(prefix)) { out.write(prefix); out.write(":"); @@ -547,5 +548,14 @@ nsURIByElement.put(element, al); } al.add(uri); + } + + private static String getNamespaceURI(Node n) { + String uri = n.getNamespaceURI(); + if (uri == null) { + // FIXME: Is "No Namespace is Empty Namespace" really OK? + uri = ""; + } + return uri; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]