Пример #1
0
  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");
  }