1:import javax.xml.parsers.*; // Includes SAXParser and SAXParserFactory 2:import org.xml.sax.*; // Needed for SAXException 3:import org.xml.sax.helpers.*; // Needed to include the DefaultHandler 4:import java.io.*; 5: 6:// A Simple SAX Application using JAXP with Namespace support 7:public class MyParser{ 8: private SAXParserFactory factory; // Creates parser factory 9: private SAXParser saxParser; // Holds a parser object 10: 11: private DefaultHandler handler; // Defines the handler for this parser 12: 13: public MyParser() throws SAXException{ 14: try{ 15: factory = SAXParserFactory.newInstance(); 16: factory.setNamespaceAware(true); 17: saxParser = factory.newSAXParser(); 18: 19: // Set Content Handlers 20: handler = new MyDefaultHandler(); 21: 22: } catch (ParserConfigurationException e){ 23: e.printStackTrace(); 24: } catch (SAXException e){ 25: e.printStackTrace(); 26: } 27: } 28: 29: public void parseDocument(String xmlFile){ 30: try{ 31: saxParser.parse(xmlFile, handler); // Parses file using handler 32: } catch (SAXException e){ 33: e.printStackTrace(); 34: } catch (IOException e){ 35: e.printStackTrace(); 36: } catch (Exception e){ 37: e.printStackTrace(); 38: } 39: } 40: 41: public static void main(String[] args){ 42: try { 43: if (args.length != 1) { 44: System.out.println( 45: "Usage: java SimpleJAXPns " + 46: "[XML Document Filename]"); 47: System.exit(0); 48: } 49: MyParser xmlApp = new MyParser(); 50: xmlApp.parseDocument(args[0]); 51: } catch (SAXException e){ 52: e.printStackTrace(); 53: } catch (Exception e) { 54: e.printStackTrace(); 55: } 56: } 57: 58: class MyDefaultHandler extends DefaultHandler{ 59: private CharArrayWriter buff = new CharArrayWriter(); 60: /* With a handler class, just override the methods you need to use 61: */ 62: public void startElement(String uri, String local, String qName, Attributes att){ 63: System.out.println("== Started element =="); 64: System.out.println("Local name: " + local); 65: System.out.println("Qname: " + qName); 66: } 67: 68: public void characters(char[] ch, int start, int length){ 69: buff.write(ch, start, length); 70: 71: // Skip spaces and end of line markers 72: // A bit of a hack. Will switch to a RegEx in the future 73: if (buff.size() > 3){ 74: System.out.println("Element Data: " + buff.toString()); 75: } 76: buff.reset(); 77: } 78: 79: public void endElement(String uri, String local, String qName){ 80: System.out.println("Ended element: " + local); 81: } 82: 83: } 84:} 85: