Spass mit SAX in VB6

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.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Spass mit SAX in VB6

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *