public void putElementEnd(QName name) throws DataModelException { if (elementStarted) flushElementStart(true); if (contentHandler != null) try { String qname = // TODO avoid double creation by managing a stack getNsPrefixes() ? nsContext.prefixedName(name) : ""; contentHandler.endElement(name.getNamespaceURI(), name.getLocalPart(), qname); // remove mappings for (int m = 0, cnt = nsContext.getLocalSize(); m < cnt; m++) contentHandler.endPrefixMapping(nsContext.getLocalPrefix(m)); } catch (SAXException e) { convertSaxException(e); } super.putElementEnd(name); }