Gpackage com.alethis.xml;
import org.xml.sax.XMLReader;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.XMLReaderFactory;
import org.xml.sax.helpers.DefaultHandler;
import java.io.*;
public class ParseUsingSAXDefaultHandler {
public final static void main(String[] args) {
try {
File f = new File("c:\\project\\xml\\in.xml");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
InputSource is = new InputSource(br);
/*
* Possible parsers:
* org.apache.xerces.parsers.SAXParser
* org.apache.crimson.parser.XMLReaderImpl
* gnu.xml.aelfred2.XmlReader
* com.bluecast.xml.Piccolo
* oracle.xml.parser.v2.SAXParser
*/
XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
parser.setContentHandler(new ContentHandlerExt());
parser.parse(is);
System.out.println("DONE");
}
catch (SAXException se) {
System.out.println("SAX exception: " + se.getMessage());
}
catch (IOException ioe) {
System.out.println("IO exception: " + ioe.getMessage());
}
}
}
class ContentHandlerExt extends DefaultHandler {
private Locator locator;
public void setDocumentLocator(Locator locator) {
this.locator = locator;
}
public void startDocument() throws SAXException {
System.out.println(getLocation() + " startDocument");
}
public void endDocument() throws SAXException {
System.out.println(getLocation() + " endDocument");
}
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
System.out.println(getLocation() + " startElement /" + namespaceURI + "/" + localName + "/" + qName + "/");
for (int i = 0; i < atts.getLength(); i++) {
System.out.println(" attribute: /" + atts.getURI(i) + "/" + atts.getLocalName(i) + "/" + atts.getQName(i) + "/" + atts.getType(i) + "/" + atts.getValue(i) + "/");
}
}
public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
System.out.println(getLocation() + " endElement /" + namespaceURI + "/" + localName + "/" + qName + "/");
}
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.print(getLocation() + " characters /");
for (int i = start; i < start + length; i++) {
switch (ch[i]) {
case '\n': System.out.print("\\n"); break;
case '\r': System.out.print("\\r"); break;
case '\f': System.out.print("\\f"); break;
case '\t': System.out.print("\\t"); break;
default: System.out.print(ch[i]);
}
}
System.out.println("/");
}
public String getLocation() {
if (locator == null) {
return "";
}
else {
return "(" + locator.getLineNumber() + ", " + locator.getColumnNumber() + ")";
}
}
}