Besseres Parsen von XML-Dokumenten in .NET

Die XML-API des .NET Frameworks unterstützt das XML DOM-Modell zum Parsen, nicht aber das SAX-Modell.

SAX ist ein sog. „Push“-Modell. Parser und Client-Anwendung sind zwei separate Programme, wobei die Anwendung eine eher passive Rolle spielt und nur mit einzelnen Knoten und Teilen arbeitet anstatt mit dem Dokument als Ganzes. Die Anwendung ist mit dem Parser verbunden und erhält Benachrichtigungen über alle im bearbeiteten Dokument gefundenen Knoten. Über diese Verbindung kann die Anwendung auch einige allgemeine Informationen darüber übermitteln, an welcher Art von Knoten sie Interesse hat.

Allerdings ist ein solcher Filter statisch und kann keine Knoten nach bestimmten Bedingungen zur Laufzeit auswählen. Eine Anwendung kann den Parser anweisen, nur Content-Knoten zurückzugeben und alle anderen zu verwerfen (z.B. Processing Instructions, Comments und Entities). Um die Knoten mit unbenötigten Elementen herauszufiltern bleibt der Anwendung nichts Anderes übrig, als die zugehörigen Ereignisse zu ignorieren und ebenso alle Informationen, die der SAX-Parser ihr schickt.

Das .NET Framework bietet eine effizientere Methode zum Parsen von XML-Dokumenten, wobei die Daten nur gelesen, nicht zwischengespeichert und nur interessante Daten weitergegeben werden. Die neue Generation von Parsern stellt einen Document Reader zur Verfügung und funktioniert als „Pull“-Modell im Gegensatz zum „Push“-Modell von SAX. Document Reader sind ein verbreitetes Element im .NET Framework und decken unterschiedliche Gebiete ab wie z.B. Datei-Ein- und Ausgabe, Datenbankzugriff und Speicherverwaltung.

Ein XML-Reader ist eine Klasse, die ein Quelldokument Knoten für Knoten durchgeht, wobei sie ausgehend vom Root-Knoten bis zum am weitesten rechts stehenden Blatt des XML-Baums vorgeht, nach dem Prinzip „Node-first“. Der Node-first-Algorithmus schreibt vor, dass der Reader zuerst die Wurzel (Root) eines Subtrees analysiert und rekursiv dessen Kinder in der Reihenfolge ihres Auftretens besucht. Die Reihenfolge des Node-first-Algorithmus entspricht der Reihenfolge, wie die XML-Knoten in einer Datei gespeichert sind.

Architektur des XML-Readers

Im Unterschied zu einem SAX-Parser akzeptiert der .NET XML-Reader direkte Anweisungen von der Anwendung. Die Anwendung hat die Kontrolle über die Reader-Komponente und entscheidet, was und wann gelesen werden soll. Im Prinzip ist das Parsen eines XML-Dokuments eine Schleife, die den Datenstrom von Anfang bis Ende durchgeht. Beim „Push“-Modell hat der Parser die Kontrolle über diese Schleife, die Anwendung ist nur ein mit dem Parser verbundener Client. Beim „Pull“-Modell hat die Anwendung selber die Kontrolle über die Schleifer, und der Parser ist nur ein Hilfs-Tool.

Was ist der Unterschied? Zuerst einmal ist das „Pull“-Modell einfacher einzurichten und flexibler, und der Programm-Code ist leichter lesbar und programmierfreundlicher. Außerdem ist das „Pull“-Modell schneller, da es den Datentransfer zwischen Anwendung und Parser auf ein Minimum reduziert.

Ein SAX-Parser liefert immer Informationen über jeden Knoten an die Anwendung, egal ob die Anwendung diese Information überhaupt angefordert hat. Ein .NET XML-Reader bietet der Anwendung direkte Methoden zum Überspringen von Knoten, so dass keine unnötigen Speicher- oder CPU-Ressourcen gebunden werden.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Mai-Patchday: Microsoft schließt zwei aktiv ausgenutzte Zero-Day-Lücken

Sie betreffen Windows 10, 11 und Windows Server. In SharePoint Server steckt zudem eine kritische…

1 Tag ago

Firefox 126 erschwert Tracking und stopft Sicherheitslöcher

Mozilla verteilt insgesamt 16 Patches für Firefox 125 und älter. Zudem entfernt der Browser nun…

1 Tag ago

Supercomputer-Ranking: Vier europäische Systeme in den Top Ten

Einziger Neueinsteiger ist das Alps-System in der Schweiz. Die weiteren Top-Ten-Systeme aus Europa stehen in…

2 Tagen ago

Angriffe mit Banking-Malware auf Android-Nutzer nehmen weltweit zu

Im vergangenen Jahr steigt ihre Zahl um 32 Prozent. Die Zahl der betroffenen PC-Nutzer sinkt…

2 Tagen ago

Künstliche Intelligenz fasst Telefonate zusammen

Die App satellite wird künftig Telefongespräche in Echtzeit datenschutzkonform mit Hilfe von KI zusammenfassen.

2 Tagen ago

MDM-Spezialist Semarchy stellt Data-Intelligence-Lösung vor

Als Erweiterung von Master-Data-Management ermöglicht es die Lösung, den Werdegang von Daten verstehen und sie…

2 Tagen ago