This section provides a tutorial example on how to write a simple program to find out what are the implementation classes for the SAX interfaces in JDK. The key is to call the javax.xml.parsers.SAXParserFactory.newInstance() method.
What is SAX (Simple API for XML)? SAX is
an Application Programming Interface (API) that allows the parser to
fire events based on the XML structure while parsing an XML file. It allows
application programs to process the contents of the XML by handling the events
fired by the parser.
SAX has been implemented in Java in J2SDK 1.4.1_01, which is already installed on my
system. So I am ready to play with XML files through SAX in Java.
The first task is to find out how JDK supports SAX.
To do this, I wrote this simple program here, SAXClassChecker.java, to show what are the
implementation classes for the SAX interfaces:
/**
* SAXClassChecker.java
* Copyright (c) 2002 by Dr. Herong Yang
*/
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.SAXException;
class SAXClassChecker {
public static void main(String[] args) {
try {
File x = new File(args[0]);
SAXParserFactory f = SAXParserFactory.newInstance();
System.out.println(f.toString());
SAXParser p = f.newSAXParser();
System.out.println(p.toString());
DefaultHandler h = new DefaultHandler();
System.out.println(h.toString());
p.parse(x,h);
} catch (ParserConfigurationException e) {
System.out.println(e.toString());
} catch (SAXException e) {
System.out.println(e.toString());
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
Run the program as: java SAXClassChecker hello.xml, you will get:
javax.xml.parsers.SAXParserFactory.newInstance() method is used to
create a new fatory instance using the factory implementation class,
org.apache.crimson.jaxp.SAXParserFactoryImpl.
javax.xml.parsers.SAXParserFactory.newSAXParser() method is used to
create a new parser instance using the parser implementation class,
org.apache.crimson.jaxp.SAXParserImpl.
javax.xml.parsers.SAXParser.parse() method is used to invoke the
parsing process. It requires two parameters, a File object representing the
XML file, and an parsing event handler object.
org.xml.sax.helpers.DefaultHandler is dummy handler, which handles all the
events fired by the parser, but does nothing. This is why we are getting nothing
from the XML file when running this program.