Wie man einen SAX-Parser verwendet, wird anhand des Apache-Xerces-J Parsers erklärt. Zunächst muß die Klasse org.apache.xerces.parsers.SAXParser importiert werden, um mit
SAXParser parser = new SAXParser();einen neuen SAX-Parser zu instanziieren. Damit die durch das Parsen entstehenden Ereignisse verarbeitet werden können, muß dem Parser ein Handler, der für die Ereignisse entsprechende Methoden enthält, übergeben werden. Dieser Handler muß von der Klasse org.xml.sax.helpers.DefaultHandler abstammen. Indem die Methoden des DefaultHandlers für die einzelnen Ereignisse überschrieben werden, kann man die Ereignisse individuell verarbeiten. Ein einfacher Handler, der lediglich die Ereignisse auf die Kommandozeile ausgibt, ist in Quellcode 3.4.1 zu sehen.
import org.xml.sax.helpers.DefaultHandler; public class MySAXHandler extends DefaultHandler { // DocumentHandler methods /** Processing instruction. */ public void processingInstruction(String target, String data) { System.out.println("Processing Instruction:" +"<?"+target+data+"?>"); } /** Start document. */ public void startDocument() { System.out.println("Start Dokument:"); } /** Start element. */ public void startElement(String uri, String localName, String qName, Attributes attrs) { System.out.println("Start Element: <"+qName+">"); } /** Characters. */ public void characters(char ch[], int start, int length) { System.out.println("Characters: " +new String(ch, start, length)); } /** Ignorable whitespace. */ public void ignorableWhitespace(char ch[], int start, int length) { characters(ch, start, length); } /** End element. */ public void endElement(String name) { System.out.println("End Element: </"+name+">"); } /** End document. */ public void endDocument() { System.out.println("End of Document"); } } |
Dieser Handler wird dann folgendermaßen dem SAX-Parser mitgeteilt:
parser.setContentHandler(myHandler);Die Erstellung eines Errorhandlers, das Einstellen der Features und das Initiieren des Parsens sind identisch zu dem DOM-Parser und werden deshalb hier nicht nochmals erläutert.