Der IVBSAXContentHandler beinhaltet eine Reihe von Methoden, die der SAX-Parser aufruft, um die Anwendung bezüglich des Inhaltes eines Dokuments zu informieren. Tabelle A enthält eine Auswahl der wichtigsten Methoden.
startDocument | Wird aufgerufen, wenn der Parser mit dem Parsen eines Dokuments beginnt. |
startElement | Wird für jedes vom Parser angetroffene Element aufgerufen, wenn der Parser das Start-Tag des Elements liest. Eingabeparameter geben den lokalen und vollständigen Namen eines Elements an. Man sollte sich bewusst sein, dass SAX eine Tiefensuche („Depth-first Traversal“) durchführt: Child-Elemente werden vor Sibling-Elementen geparst. |
characters | Wird nach startElement für Datenelemente aufgerufen. Die Daten werden als Eingabeparameter an die Methode weitergegeben. Da die VB-Implementierung des SAX-Parsers nicht validierend ist, empfängt diese Methode also auch Leerzeichen (sog. „White Space“). |
endElement | Wird nach startElements und characters aufgerufen, wenn der Parser die Closing-Tags eines Elements liest. |
processingInstruction | Wird aufgerufen, wenn der Parser auf ein Processing-Instruction-Element trifft. Über einen Eingabeparameter wird der Inhalt dieser Instruction an die Methode weitergegeben. |
endDocument | Wird aufgerufen, wenn der Parser das Parsen eines Dokuments beendet. Ab diesem Punkt kann der Parser erneut zum Parsen eines anderen Dokuments eingesetzt werden. |
Tabelle A: Wichtige Methoden des Content-Handlers
Auf diesem Interface sollten zumindest die Methoden startElement und characters implementiert werden, und eine Instanz der implementierenden Klasse sollte über die Eigenschaft contentHandler des SAXXMLReader an diesen weitergegeben werden.
Der Trick bei der Implementierung eines Content-Handlers besteht darin, dass SAX zustandslos ist: die implementierende Klasse muss selbst den Überblick über das momentan geparste Element behalten (man muss den Namen speichern, den startElement ausgibt), damit klar wird, was man mit dem durch die Methode characters erhaltenen Content des Elements zu tun ist. Außerdem ist die aktuelle VB-Implementierung von SAX nicht validierend, was einen interessanten Nebeneffekt verursacht: Leerräume (White Space) in einem Dokument werden nicht, wie zu erwarten gewesen wäre, an ignorableWhitespace weitergereicht, sondern an characters übergegeben.
Handling-Fehler
Zur Mitteilung von Parsing-Fehlern an die Anwendung verwendet der SAX-Parser ein weiteres spezielles Interface, den IVBSAXErrorHandler. Obgleich sich in der Dokumentation Hinweise auf die Methoden error und fatalError finden, ruft die aktuelle SAX-Implementierung für VB nur fatalError auf. Interessanterweise scheint der Parser für jeden Parsing-Fehler auch abfangbare Fehler in die Anwendung zu laden, wodurch die Verwendung eines Error-Handlers gewissermaßen überflüssig wird. Entscheidet man sich für die Verwendung eines Error-Handlers, sollte man zumindest fatalError implementieren und eine Instanz der implementierenden Klasse mit Hilfe der Eigenschaft errorHandler an den SAXXMLReader weitergeben.
Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…
Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.
Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…
Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.
Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.
Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…