Einführung in XML
7. SAX und DOM - Programmierung mit XML
7.4 SAX-Anwendung in Java erstellen

Schritt 2 - Erstellen eines DocumentHandlers

Im zweiten Schritt wird der DocumentHandler erstellt, also das Objekt, welches die Events vom Parser entgegennimmt. Auch hierfür stellt Java bereits eine Klasse DefaultHandler zur Verfügung.
 
Definition im Lehrtext
Definition
Ein Handler dient in Programmiersprachen zur Vereinfachung der Ereignisbehandlung. Anders als bei traditionellen, linearen Programmen werden an bestimmten Stellen spezielle Unterprogramme immer dann ausgeführt, wenn ein bestimmtes Ereignis auftritt.
 
Der SAX-Parser generiert die Ereignisse, der DefaultHandler dient dazu, die SAX-Ereignisse zu behandeln. Wir müssen von DefaultHandler eine neue Klasse DocumentHandler1 ableiten (vgl. Kapitel 7.3), um alle Ereignisbehandlungsroutinen zu erben:
 
class DocumentHandler1 extends DefaultHandler
 
 
Alle Methoden bzw. Ereignisbehandlungsroutinen des DefaultHandlers sind leer, d.h. sie tun gar nichts. Der DefaultHandler dient lediglich als Basisklasse für neue DocumentHandler. Damit der DocumentHandler in Aktion gehen kann, überschreiben wir vorerst nur die Methode startElement():
 
Beispiel
public void startElement(String namespaceURI,
                         String localName,
                         String qualifiedName,
                         Attributes attrs)
throws SAXException

  System.out.println(qualifiedName);
}
 
Mit public (vgl. Kapitel 7.2) ist die Methode öffentlich zugreifbar. Das muss sie auch sein, denn der Parser wird sie bei jedem gefundenen Element aufrufen. Stößt der Parser beim Parsevorgang auf das öffnende Tag eines Elements, so ruft er diese Methode des DocumentHandlers auf und übergibt vier Werte:
 
  • namespaceURI - URI des Namensraums
  • localName - der einfache Name des Elements (falls Namensräume genutzt werden)
  • qualifiedName - der vollständige Name des Elements
  • Attributes - die Attribute des Elements
 
Hinweis
Bei unserem Beispiel werden wir uns darauf beschränken, nur den Namen des Elements über die Funktion System.out.println() (vgl. Kapitel 7.2) auszugeben.
 
Damit ist nun unser einfacher DocumentHandler fertig, der die Namen aller gefundenen XML-Elemente ausgibt. Erzeugt wird der DocumentHandler mit folgender Anweisung:
 
Beispiel
DefaultHandler documentHandler = new DocumentHandler1();