Mega Code Archive

 
Categories / Java / XML
 

List an XML document with DOM parser

import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.DocumentType; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; public class MainClass implements ErrorHandler {   public static void main(String args[]) throws Exception {     DocumentBuilderFactory builderFactory = DocumentBuilderFactory         .newInstance();     builderFactory.setNamespaceAware(true);     builderFactory.setValidating(true);     DocumentBuilder builder = null;     builder = builderFactory.newDocumentBuilder();     builder.setErrorHandler(new MainClass());     Document xmlDoc = null;     xmlDoc = builder.parse(new File("y.xml"));     DocumentType doctype = xmlDoc.getDoctype();     System.out.println("DOCTYPE node:\n" + doctype);     listNodes(xmlDoc.getDocumentElement(), "");   }   static void listNodes(Node node, String indent) {     String nodeName = node.getNodeName();     System.out.println(indent + nodeName + " Node, type is "         + node.getClass().getName() + ":");     System.out.println(indent + " " + node);     NodeList list = node.getChildNodes();     if (list.getLength() > 0) {       System.out.println(indent + "Child Nodes of " + nodeName + " are:");       for (int i = 0; i < list.getLength(); i++)         listNodes(list.item(i), indent + " ");     }   }   public void fatalError(SAXParseException spe) throws SAXException {     System.out.println("Fatal error at line " + spe.getLineNumber());     System.out.println(spe.getMessage());     throw spe;   }   public void warning(SAXParseException spe) {     System.out.println("Warning at line " + spe.getLineNumber());     System.out.println(spe.getMessage());   }   public void error(SAXParseException spe) {     System.out.println("Error at line " + spe.getLineNumber());     System.out.println(spe.getMessage());   } } <?xml version="1.0"?> <!DOCTYPE address SYSTEM "AddressDoc.dtd"> <address>   <buildingnumber> 29 </buildingnumber>   <street> South Lasalle Street</street>   <city>Chicago</city>   <state>Illinois</state>   <zip>60603</zip> </address> <!ELEMENT address (buildingnumber, street, city, state, zip)> <!ELEMENT buildingnumber (#PCDATA)> <!ELEMENT street (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT state (#PCDATA)> <!ELEMENT zip (#PCDATA)>