Freigeben über


"XmlReader" und "SAX-Reader"

XmlReader ist ebenso wie der SAX-Reader (Simple API for XML) ein vorwärtsgerichteter schreibgeschützter Cursor. Er bietet schnellen, nicht zwischengespeicherten Datenstromzugriff auf die Eingabe. Er kann einen Datenstream oder ein Dokument lesen. Der Benutzer kann Daten durch einen Pull einlesen und Datensätze überspringen, die für die Anwendung nicht relevant sind. Der wesentliche Unterschied liegt in der Tatsache, dass das SAX-Modell ein Push-Modell ist, bei dem der Parser Ereignisse durch einen Push in die Anwendung einliest, wobei die Anwendung jedes Mal benachrichtigt wird, wenn ein neuer Knoten gelesen wurde, während Anwendungen mit dem XmlReader Knoten beliebig durch einen Pull aus dem Reader einlesen können. Die Vorteile dieses Pullmodells liegen in folgenden Punkten:

Vorteil

Beschreibung

Zustandsverwaltung

Beim Pushmodell müssen die Inhaltshandler sehr komplexe Zustandsautomaten erstellen. Beim Pullmodell vereinfacht der Client die Statusverwaltung durch eine natürliche Prozedur von oben nach unten.

Mehrere Eingabestreams

Beim Pullmodell kann der Client mehrere Eingabestreams kombinieren. Dies ist im Pushmodell ein äußerst komplexer Vorgang.

Schichten

Das Pushmodell kann über das Pullmodell gelegt werden. Umgekehrt ist dies nicht möglich.

Vermeidung von zusätzlichen Zeichenfolgenkopien

Normalerweise werden die Daten aus dem Parserpuffer in das Zeichenfolgenobjekt eingelesen, das dann durch einen Push in den Clientpuffer übertragen wird. Beim Pullmodell kann der Client dem Parser einen Puffer übergeben, in den die Zeichenfolge direkt geschrieben wird.

Selektive Verarbeitung

Das Pushmodell benachrichtigt den Client über jedes Element, einschließlich Attribute, Verarbeitungsanweisungen und Leerraum, während der Client beim Pullmodell Elemente überspringen kann, sodass nur die Elemente verarbeitet werden, die für die Anwendung relevant sind. Dies ermöglicht überaus effiziente Anwendungen. Darüber hinaus können im Voraus Eigenschaften festgelegt werden, die die Art der Verarbeitung des XML-Datenstreams beeinflussen (z. B. Normalisierung).

Siehe auch

Konzepte

Lesen von XML mit dem "XmlReader"

Weitere Ressourcen

Verwenden der "XmlReader"-Klasse