public void startElement(String namespaceUri, String localName, String qname, Attributes atts) throws SAXException { // System.out.println(getClass().getName()+".startElement ns=" + namespaceUri + ", name=" + // localName + ", qname=" + qname); StackContext stackEntry = stack.peek(); SaxPath saxPathParent = stackEntry.saxPath; SaxPath saxPath; if (saxPathParent == null) { saxPath = new SaxPath(context.getNameTable(), namespaceUri, localName, qname, atts); } else { saxPath = new SaxPath(namespaceUri, localName, qname, atts, saxPathParent); } SaxEventBufferBuilder bufferBuilder = stackEntry.bufferBuilder; // System.out.println(getClass().getName()+".startElement matched"); // if (saxPathParent == null) { if (level == 0) { bufferBuilder = new SaxEventBufferBuilder(); bufferBuilder.startDocument(); Iterator<Map.Entry<String, String>> iter = prefixMap.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<String, String> entry = iter.next(); bufferBuilder.startPrefixMapping(entry.getValue(), entry.getKey()); } } if (bufferBuilder != null) { bufferBuilder.startElement(namespaceUri, localName, qname, atts); } stack.push(new StackContext(saxPath, bufferBuilder)); super.startElement(namespaceUri, localName, qname, atts); ++level; // System.out.println(getClass().getName()+".startElement " + qname + " leave"); }