package dom4wspart3;
import :java.io.OutputStreamWriter;
import java.io.PrintWriter;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.*;
import java.io.File;
//Range:
import org.w3c.dom.ranges.DocumentRange;
import org.w3c.dom.ranges.Range;
//Document fragment:
import org.w3c.dom.DocumentFragment;
public class DOMSampleRange {
public static void main(String argv[]) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
if (!db.getDOMImplementation().hasFeature("Range", "2.0") ) {
System.out.println("Range module not supported");
return;
}//if
Document doc = db.newDocument();
DocumentRange docRange = (DocumentRange)doc;
Range range = docRange.createRange();
Element wrapper = doc.createElementNS(
"http://domsamples.wrapper",
"wrapper");
wrapper.appendChild(doc.createTextNode("Contents of the wrapper"));
doc.appendChild(wrapper);
Element e1 = doc.createElementNS(
"http://domsamples.wrapper",
"e1");
e1.appendChild(doc.createTextNode("Contents of e1"));
wrapper.appendChild(e1);
Element e2 = doc.createElementNS(
"http://domsamples.wrapper",
"e2");
e2.appendChild(doc.createTextNode("Contents of e2"));
wrapper.appendChild(e2);
Element e3 = doc.createElementNS(
"http://domsamples.wrapper",
"e3");
e3.appendChild(doc.createTextNode("Contents of e3"));
wrapper.appendChild(e3);
Element e4 = doc.createElementNS(
"http://domsamples.wrapper",
"e4");
e4.appendChild(doc.createTextNode("Contents of e4"));
wrapper.appendChild(e4);
Element e5 = doc.createElementNS(
"http://domsamples.wrapper",
"e5");
e5.appendChild(doc.createTextNode("Contents of e5"));
wrapper.appendChild(e5);
range.setEndBefore(e5);
range.setStartAfter(e1);
DocumentFragment frag = range.cloneContents();
Document newDoc = db.newDocument();
Element newWrapper = newDoc.createElementNS(
"http://domsamples.wrapper",
"newWrapper");
newDoc.appendChild(newWrapper);
frag = (DocumentFragment)newDoc.importNode(frag, true);
newWrapper.appendChild(frag);
DOMSampleRange sample = new DOMSampleRange();
sample.printDocument("The sample document:", newDoc);
}//try
catch (Exception e) {
e.printStackTrace(System.err);
}//catch
}//main
public void printDocument(String title, Document doc) {
System.out.println("");
System.out.println("");
System.out.println("*********************");
System.out.println(title+":");
try {
OutputFormat outputFormat = new OutputFormat(doc);
outputFormat.setPreserveSpace(true);
XMLSerializer serializer = new XMLSerializer(System.out, outputFormat);
serializer.serialize(doc);
System.out.println("");
}//try
catch (Exception e) {
e.printStackTrace(System.err);
}//catch
System.out.println("*********************");
System.out.println("");
System.out.println("");
}//printDocument
}//DOMSampleRange