Browse Source

better deal with elements that don't have a namespace URI

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@357908 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 19 years ago
parent
commit
cc6786e6a6
1 changed files with 21 additions and 11 deletions
  1. +21
    -11
      src/main/org/apache/tools/ant/util/DOMElementWriter.java

+ 21
- 11
src/main/org/apache/tools/ant/util/DOMElementWriter.java View File

@@ -33,6 +33,7 @@ import org.w3c.dom.Text;

/**
* Writes a DOM tree to a given Writer.
* warning: this utility currently does not declare XML Namespaces.
* <p>Utility class used by {@link org.apache.tools.ant.XmlLogger
* XmlLogger} and
* org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
@@ -278,7 +279,8 @@ public class DOMElementWriter {
// 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 @@ public class DOMElementWriter {
} 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 @@ public class DOMElementWriter {
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 @@ public class DOMElementWriter {

// 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(":");
@@ -548,4 +549,13 @@ public class DOMElementWriter {
}
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;
}
}

Loading…
Cancel
Save