  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Struts - A MVC web framework | | Tomcat - JSP/Servlet container | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | | JSP - A mailing list about Java Server Pages specification and reference | |
Struts & Hibernate
|
|
|
  | | | RE: Bug in SAXOutputter | RE: Bug in SAXOutputter 2004-04-02 - By PJ Fanning
Back 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@(protected)' 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 __ ____ ____ ____ ____ ____ ____ ____ ____ ____ To control your jdom-interest membership: http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@(protected) .com
|
|
 |