We have already discussed about the DOM Parser of JAXP. This article will focus on Reading XML file using SAX Parser:

SAXParser object can obtained from the SAXParserFactory and then we can process the document using that parser.
The most important interface in SAX parser class is ContentHandler. This interface requires a number of methods that the SAX parser invokes in response to various parsing events. The major event-handling methods are: startDocument, endDocument, startElement, and endElement.
The easiest way to implement this interface is to extend the DefaultHandler class, defined in the org.xml.sax.helpers package. That class provides do-nothing methods for all the ContentHandler events.
The example program extends that class.
public class SAXLocalNameCount extends DefaultHandler {
Example :
Locator to indicate the current position of SAX Parser.
package com.G2.SAX;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class XMlParserLocator extends DefaultHandler {
Locator locator;
@Override
public void startElement(String uri, String localName, String tagName, Attributes arg3) throws SAXException {
String locationString = "";
if (locator != null) {
locationString += locator.getSystemId();
locationString += "Line : " + locator.getLineNumber();
locationString += "Column : " + locator.getColumnNumber();
System.out.println(locationString);
}
}
public static void main(String[] args) {
try {
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser parser = saxFactory.newSAXParser();
parser.parse("ShivaSoft.xml", new XMlParserLocator());
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void setDocumentLocator(Locator arg0) {
locator = arg0;
System.out.println("setDocumentLocator() Called");
}
}
Leave a Reply to aCancel reply