File: DOMBuilder.java

package info (click to toggle)
libxt-java 0.19991105-5
  • links: PTS
  • area: main
  • in suites: woody
  • size: 1,908 kB
  • ctags: 2,762
  • sloc: java: 12,823; makefile: 52; xml: 46
file content (53 lines) | stat: -rw-r--r-- 1,502 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.jclark.xsl.dom;

import org.xml.sax.*;
import com.jclark.xsl.sax.CommentHandler;
import org.w3c.dom.*;

public class DOMBuilder implements DocumentHandler, CommentHandler {
  private Node parent;
  private Document document;

  public DOMBuilder(Node parent) {
    this.parent = parent;
    if (parent.getNodeType() == Node.DOCUMENT_NODE)
      this.document = (Document)parent;
    else
      this.document = parent.getOwnerDocument();
  }

  public void startDocument() { }

  public void characters(char ch[], int start, int len) {
    parent.appendChild(document.createTextNode(new String(ch, start, len)));
  }

  public void ignorableWhitespace (char ch[], int start, int len) {
    characters(ch, start, len);
  }
  
  public void startElement(String name, AttributeList atts) {
    Element element = document.createElement(name);
    int len = atts.getLength();
    for (int i = 0; i < len; i++)
      element.setAttribute(atts.getName(i), atts.getValue(i));
    parent.appendChild(element);
    parent = element;
  }

  public void endElement(String name) {
    parent = parent.getParentNode();
  }

  public void processingInstruction(String target, String data) {
    parent.appendChild(document.createProcessingInstruction(target, data));
  }

  public void comment(String body) {
    parent.appendChild(document.createComment(body));
  }

  public void endDocument() { }

  public void setDocumentLocator(Locator loc) { }
}