1 package org.igfay.util; 2 3 import javax.xml.parsers.DocumentBuilder ; 4 import javax.xml.parsers.DocumentBuilderFactory ; 5 import javax.xml.parsers.ParserConfigurationException ; 6 7 import org.w3c.dom.Document ; 8 import org.w3c.dom.Element ; 9 import org.w3c.dom.NamedNodeMap ; 10 import org.w3c.dom.Node ; 11 import org.w3c.dom.NodeList ; 12 13 public class PrettyPrinter { 14 public static void printDoc(String url) throws ParserConfigurationException { 15 System.out.println("Pretty printing XML file: " + url + "."); 16 DocumentBuilderFactory parserFactory = DocumentBuilderFactory.newInstance(); 21 parserFactory.setValidating(true); 23 parserFactory.setNamespaceAware(true); 24 parserFactory.setExpandEntityReferences(true); 25 DocumentBuilder parser = parserFactory.newDocumentBuilder(); 27 try { 28 Document doc = parser.parse(url); 30 printNode(doc); } catch (Exception e) { 33 System.out.println("Error in parsing: " + e.getMessage()); 34 } 35 }; 36 37 public static void printNode(Node node) { 38 switch (node.getNodeType()) { 40 case Node.DOCUMENT_NODE: 41 System.out.println("<?xml version=\"1.0\" encoding=\"UTF8\"?>"); 42 Document doc = (Document ) node; 43 printNode(doc.getDocumentElement()); 44 break; 45 case Node.ELEMENT_NODE: 46 Element element = (Element ) node; 47 element.normalize(); 48 String name = node.getNodeName(); 49 System.out.print("<" + name); 50 NamedNodeMap attributes = node.getAttributes(); 51 for (int i = 0; i < attributes.getLength(); i++) { 52 Node attr = attributes.item(i); 53 System.out.print(" " + attr.getNodeName() + "=\"" + attr.getNodeValue() + "\""); 54 } 55 ; 56 System.out.println(">"); 57 NodeList children = node.getChildNodes(); 58 if (children != null) { 59 for (int i = 0; i < children.getLength(); i++) { 60 printNode(children.item(i)); 61 } 62 ; 63 } 64 ; 65 System.out.println("</" + name + ">"); 66 break; 67 case Node.TEXT_NODE: 68 case Node.CDATA_SECTION_NODE: 69 System.out.println(node.getNodeValue() + ""); break; 71 case Node.PROCESSING_INSTRUCTION_NODE: 72 break; 73 case Node.ENTITY_REFERENCE_NODE: 74 System.out.println("&" + node.getNodeName() + ";"); 75 break; 76 case Node.DOCUMENT_TYPE_NODE: 77 break; 78 } 79 ; 80 }; 81 82 public static void main(String [] args) { 83 if (args.length != 1) { 84 System.out.println("Usage: java PrettyPrinter [XML URL]"); 85 System.exit(0); 86 } 87 ; 88 89 String url = args[0]; 90 91 try { 92 PrettyPrinter.printDoc(url); 93 } catch (ParserConfigurationException e) { 94 System.out.println("Pretty printer failed due to parser" + "configuration error."); 95 System.exit(0); 96 } 97 }; 98 } 99 100 | Popular Tags |