Copyright 2001, Gerry de Koning
/* * Copyright 2001, Gerry de Koning * * This program is for educational purposes only. * It is an example only, and not designed to be * fit for any other purpose. */ import org.apache.xerces.parsers.*; import org.xml.sax.*; import java.io.*; public class SAXDemo implements ContentHandler { private static Reader xmlFile; private static XMLReader reader; private Locator locator; public static void main (String[] args) throws Exception { switch (args.length) { case 1: xmlFile = new FileReader(args[0]); reader = new SAXParser(); reader.setContentHandler(new SAXDemo()); reader.parse(new InputSource(xmlFile)); break; default: System.err.println("Usage: java SAXDemo xmlFile"); System.exit(1); break; } } public void setDocumentLocator(Locator locator) { System.out.println("We have a locator!"); this.locator = locator; } public void startDocument() { System.out.println("Start of document"); } public void endDocument() { System.out.println("End of Document"); } public void startElement(String namespace, String name, String qName, Attributes atts) { System.out.println("\nAt line " + locator.getLineNumber() + " column " + locator.getColumnNumber() + ":"); System.out.println("Start Element: " + qName); for (int i=0; i < atts.getLength(); i++) { System.out.println(" Attribute: " + atts.getQName(i) + " (" + atts.getValue(i) + ")"); } } public void endElement(String namespace, String name, String qName) { System.out.println("End of Element: " + qName); } public void characters(char[] ch, int start, int length) { System.out.println("Characters: >>" + new String(ch, start, length) + "<<"); } public void processingInstruction(String target, String data) { System.out.println("Processing instruction: " + target + " (" + data +")"); } public void startPrefixMapping(String prefix, String uri) {} public void endPrefixMapping(String prefix) {} public void ignorableWhitespace( char[] ch, int start, int length) {} public void skippedEntity(String name) {} } |