import javax.xml.parsers.*; // Includes SAXParser and SAXParserFactory import org.xml.sax.*; // Needed for SAXException import org.xml.sax.helpers.*; // Needed to include the DefaultHandler import java.io.*; // A Simple SAX Application using JAXP with Namespace support public class MyParser{ private SAXParserFactory factory; // Creates parser factory private SAXParser saxParser; // Holds a parser object private DefaultHandler handler; // Defines the handler for this parser public MyParser() throws SAXException{ try{ factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true); saxParser = factory.newSAXParser(); // Set Content Handlers handler = new MyDefaultHandler(); } catch (ParserConfigurationException e){ e.printStackTrace(); } catch (SAXException e){ e.printStackTrace(); } } public void parseDocument(String xmlFile){ try{ saxParser.parse(xmlFile, handler); // Parses file using handler } catch (SAXException e){ e.printStackTrace(); } catch (IOException e){ e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } } public static void main(String[] args){ try { if (args.length != 1) { System.out.println( "Usage: java SimpleJAXPns " + "[XML Document Filename]"); System.exit(0); } MyParser xmlApp = new MyParser(); xmlApp.parseDocument(args[0]); } catch (SAXException e){ e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } class MyDefaultHandler extends DefaultHandler{ private CharArrayWriter buff = new CharArrayWriter(); /* With a handler class, just override the methods you need to use */ public void startElement(String uri, String local, String qName, Attributes att){ System.out.println("== Started element =="); System.out.println("Local name: " + local); System.out.println("Qname: " + qName); } public void characters(char[] ch, int start, int length){ buff.write(ch, start, length); // Skip spaces and end of line markers // A bit of a hack. Will switch to a RegEx in the future if (buff.size() > 3){ System.out.println("Element Data: " + buff.toString()); } buff.reset(); } public void endElement(String uri, String local, String qName){ System.out.println("Ended element: " + local); } } }