/** * This will recursively invoke all of the callbacks for a particular element. * * @param element <code>Element</code> used in callbacks. * @param namespaces <code>List</code> stack of Namespaces in scope. */ private void element(Element element, NamespaceStack stack) throws JDOMException { AttributesImpl nsAtts = null; // The namespaces as xmlns attributes // contentHandler.startPrefixMapping() stack.push(element); try { for (Namespace ns : stack.addedForward()) { startPrefixMapping(ns); nsAtts = this.addNsAttribute(nsAtts, ns); } // contentHandler.startElement() startElement(element, nsAtts); // handle content in the element elementContent(element.getContent(), stack); // update locator if (locator != null) { locator.setNode(element); } // contentHandler.endElement() endElement(element); } finally { stack.pop(); } // contentHandler.endPrefixMapping() // de-map in reverse order to the mapping. for (Namespace ns : stack.addedReverse()) { endPrefixMapping(ns); } }