+
+ public Node asnode(Object o) {
+ if(o instanceof Node) {
+ Node n = (Node)o;
+ if(n.getOwnerDocument() != doc)
+ return(doc.importNode(n, true));
+ return(n);
+ }
+ if(o instanceof String)
+ return(text((String)o));
+ throw(new RuntimeException("Cannot convert a " + o.getClass().getName() + " to a DOM node"));
+ }
+
+ public void finalise() {
+ Node n = doc;
+ while(true) {
+ Node nx;
+ if(n.getFirstChild() != null) {
+ nx = n.getFirstChild();
+ } else if(n.getNextSibling() != null) {
+ nx = n.getNextSibling();
+ } else {
+ for(nx = n.getParentNode(); nx != null; nx = nx.getParentNode()) {
+ if(nx.getNextSibling() != null) {
+ nx = nx.getNextSibling();
+ break;
+ }
+ }
+ }
+ String ns = n.getNamespaceURI();
+ if((ns != null) && ns.equals(DocBuffer.ns))
+ n.getParentNode().removeChild(n);
+ if(nx == null)
+ break;
+ else
+ n = nx;
+ }
+ }