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) { }
}
|