[jdom-interest] Bug in SAXOutputter
PJ Fanning
pj.fanning at polarlake.com
Tue Mar 16 04:40:08 PST 2004
Hi,
I think there is a bug in the way SAXOutputter handles default namespaces. I
have a document with the following format:
<?xml version="1.0"?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<connectResponse xmlns="">
<sessionID>1</sessionID>
</connectResponse>
</Body>
</Envelope>
The SAXOutputter does not create startPrefixMapping or endPrefixMapping
events when it reaches the <connectResponse> element.
The current startPrefixMapping says:
Namespace ns = element.getNamespace();
if (ns != Namespace.NO_NAMESPACE && ns != Namespace.XML_NAMESPACE) {
String prefix = ns.getPrefix();
String uri = namespaces.getURI(prefix);
if (!ns.getURI().equals(uri)) {
namespaces.push(ns);
nsAtts = this.addNsAttribute(nsAtts, ns);
try {
contentHandler.startPrefixMapping(prefix, ns.getURI());
}
catch (SAXException se) {
throw new JDOMException(
"Exception in startPrefixMapping", se);
}
}
}
I've changed this to:
Namespace ns = element.getNamespace();
if (ns != Namespace.XML_NAMESPACE) {
boolean add = false;
if (ns == Namespace.NO_NAMESPACE) {
String uri = namespaces.getURI(ns.getPrefix());
if(uri != null && uri.length() > 0)
add = true;
}
else {
String uri = namespaces.getURI(ns.getPrefix());
if (!ns.getURI().equals(uri))
add = true;
}
if (add) {
namespaces.push(ns);
nsAtts = this.addNsAttribute(nsAtts, ns);
try {
contentHandler.startPrefixMapping(ns.getPrefix(),
ns.getURI());
}
catch (SAXException se) {
throw new JDOMException(
"Exception in startPrefixMapping", se);
}
}
}
I have attached a patched version of SAXOutputter (based on the latest
source in CVS). Could someone double-check that this change is okay and
consider adding it to the forthcoming v1.0 release?
Regards,
PJ
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SAXOutputter.java
Type: application/octet-stream
Size: 48697 bytes
Desc: not available
Url : http://jdom.org/pipermail/jdom-interest/attachments/20040316/231d42e6/SAXOutputter.obj
More information about the jdom-interest
mailing list