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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

1 Tag ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

1 Tag ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

1 Tag ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

2 Tagen ago

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

2 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

2 Tagen ago