import java.io.*;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.apache.xerces.parsers.DOMParser;
public class MainClass {
public void processNode(Node node, String spacer) throws IOException {
if (node == null)
return;
switch (node.getNodeType()) {
case Node.ELEMENT_NODE:
String name = node.getNodeName();
System.out.print(spacer + "<" + name);
NamedNodeMap nnm = node.getAttributes();
for (int i = 0; i < nnm.getLength(); i++) {
Node current = nnm.item(i);
System.out.print(" " + current.getNodeName() + "= " + current.getNodeValue());
}
System.out.print(">");
NodeList nl = node.getChildNodes();
if (nl != null) {
for (int i = 0; i < nl.getLength(); i++) {
processNode(nl.item(i), "");
}
}
System.out.println(spacer + "</" + name + ">");
break;
case Node.TEXT_NODE:
System.out.print(node.getNodeValue());
break;
case Node.CDATA_SECTION_NODE:
System.out.print("" + node.getNodeValue() + "");
break;
case Node.ENTITY_REFERENCE_NODE:
System.out.print("&" + node.getNodeName() + ";");
break;
case Node.ENTITY_NODE:
System.out.print("<ENTITY: " + node.getNodeName() + "> </" + node.getNodeName() + "/>");
break;
case Node.DOCUMENT_NODE:
NodeList nodes = node.getChildNodes();
if (nodes != null) {
for (int i = 0; i < nodes.getLength(); i++) {
processNode(nodes.item(i), "");
}
}
break;
case Node.DOCUMENT_TYPE_NODE:
DocumentType docType = (DocumentType) node;
System.out.print("<!DOCTYPE " + docType.getName());
if (docType.getPublicId() != null) {
System.out.print(" PUBLIC " + docType.getPublicId() + " ");
} else {
System.out.print(" SYSTEM ");
}
System.out.println(" " + docType.getSystemId() + ">");
break;
default:
break;
}
}
public static void main(String[] args) {
String uri = "test.xml";
try {
bookDescDOM bd = new bookDescDOM();
System.out.println("Parsing XML File: " + uri + "\n\n");
DOMParser parser = new DOMParser();
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature("http://xml.org/sax/features/namespaces", false);
parser.parse(uri);
Document doc = parser.getDocument();
bd.processNode(doc, "");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error: " + e.getMessage());
}
}
}
|