import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.* ; import org.w3c.dom.* ; public class MyProcessor { public static void main(String [] args) throws Exception { File source = new File(args [0]) ; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true) ; factory.setValidating(true) ; DocumentBuilder builder = factory.newDocumentBuilder(); builder.setErrorHandler(new MyErrorHandler()) ; Document document = builder.parse(source) ; process(document.getDocumentElement()) ; } static void process(Node node) { System.out.println(node.getNodeName()) ; switch(node.getNodeType()) { case Node.ELEMENT_NODE: NamedNodeMap attributes = node.getAttributes() ; for(int i = 0 ; i < attributes.getLength() ; i++) process(attributes.item(i)) ; NodeList children = node.getChildNodes() ; for(int i = 0 ; i < children.getLength() ; i++) process(children.item(i)) ; break ; case Node.TEXT_NODE: case Node.ATTRIBUTE_NODE: System.out.println(node.getNodeValue()) ; } } } class MyErrorHandler implements ErrorHandler { public void warning(SAXParseException e) throws SAXException { System.out.println(e.getMessage()); } public void error(SAXParseException e) throws SAXException { System.out.println(e.getMessage()); } public void fatalError(SAXParseException e) throws SAXException { System.out.println(e.getMessage()); System.exit(1) ; } }