[jdom-interest] RE: Bug in SAXOutputter
PJ Fanning
pj.fanning at polarlake.com
Fri Apr 2 02:45:50 PST 2004
Hi,
I recently submitted a patch for the SAXOutputter to the list. This class
does not handle the case where qualified elements have unqualified elements
for children correctly. I was wondering if this patch might be included in
the next version of JDOM and when this was likely to be released.
Regards,
PJ
-----Original Message-----
From: PJ Fanning
Sent: 16 March 2004 12:40
To: 'jdom-interest at jdom.org'
Subject: Bug in SAXOutputter
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
More information about the jdom-interest
mailing list