Lesen von XML-Daten mithilfe von XPathDocument und XmlDocument

Es gibt zwei Möglichkeiten, wie ein XML-Dokument in einem System.Xml.XPath-Namespace gelesen werden kann. Zum einem kann ein XML-Dokument mithilfe der schreibgeschützten XPathDocument-Klasse und zum anderen mithilfe der editierbaren XmlDocument-Klasse im System.Xml-Namespace gelesen werden.

Lesen von XML-Dokumenten mithilfe der XPathDocument-Klasse

Die XPathDocument-Klasse bietet eine schnelle, schreibgeschützte Darstellung eines XML-Dokuments im Speicher mithilfe des XPath-Datenmodells. Instanzen der XPathDocument-Klasse werden mithilfe einer ihrer sechs Konstruktoren erstellt. Diese Konstruktoren ermöglichen das Lesen eines XML-Dokuments mithilfe eines der Objekte Stream, TextReader oder XmlReader sowie des string-Pfads zu einer XML-Datei.

Im folgenden Beispiel wird die Verwendung des XPathDocument-Konstruktors der string-Klasse zum Lesen eines XML-Dokuments veranschaulicht.

Dim document As XPathDocument = New XPathDocument("books.xml")  
XPathDocument document = new XPathDocument("books.xml");  

Lesen von XML-Dokumenten mithilfe der XmlDocument-Klasse

Die XmlDocument-Klasse ist eine editierbare speicherresidente Darstellung eines XML-Dokuments, die das DOM Level 1 Core und das DOM Level 2 Core des W3C implementiert. Instanzen der XmlDocument-Klasse werden mithilfe einer ihrer drei Konstruktoren erstellt. Sie können ein neues, leeres XmlDocument-Objekt erstellen, indem Sie den Konstruktor der XmlDocument-Klasse ohne Parameter aufrufen. Verwenden Sie nach dem Aufrufen des Konstruktors die Load-Methode, um XML-Daten aus einem der Objekte XmlDocument, Stream oder TextReader sowie aus dem XmlReader-Pfad zu einer XML-Datei in das neue string-Objekt zu laden.

Im folgenden Beispiel wird die Verwendung des Konstruktors der XmlDocument-Klasse ohne Parameter und die Verwendung der Load-Methode zum Lesen eines XML-Dokuments veranschaulicht.

Dim document As XmlDocument = New XmlDocument()  
document.Load("books.xml")  
XmlDocument document = new XmlDocument();  
document.Load("books.xml");  

Bestimmen der Codierung eines XML-Dokuments

Ein XmlReader-Objekt kann, wie in den vorangehenden Abschnitten dargestellt, zum Lesen eines XML-Dokuments und zum Erstellen eines XPathDocument-Objekts und eines XmlDocument-Objekts verwendet werden. Ein XmlReader-Objekt liest jedoch u. U. nicht codierte Daten und stellt folglich keine Codierungsinformationen bereit.

Die XmlTextReader-Klasse erbt von der XmlReader-Klasse, stellt mithilfe ihrer Encoding-Eigenschaft Codierungsinformationen bereit und kann zum Erstellen eines XPathDocument-Objekts oder eines XmlDocument-Objekts verwendet werden.

Weitere Informationen über die von der XmlTextReader-Klasse bereitgestellten Codierungsinformationen finden Sie unter der Encoding-Eigenschaft in der Referenzdokumentation der XmlTextReader-Klasse.

Erstellen von XPathNavigator-Objekten

Nachdem Sie ein XML-Dokument in ein XPathDocument-Objekt oder ein XmlDocument-Objekt gelesen haben, können Sie ein XPathNavigator-Objekt zum Auswählen, Auswerten, Navigieren und in einigen Fällen zum Bearbeiten der zugrunde liegenden XML-Daten erstellen.

Zusätzlich zur XPathDocument-Klasse implementieren sowohl die XmlDocument-Klasse als auch die XmlNode-Klasse die IXPathNavigable-Schnittstelle des System.Xml.XPath-Namespaces. Folglich stellen alle drei Klassen eine CreateNavigator-Methode bereit, die ein XPathNavigator-Objekt zurückgibt.

Bearbeiten von XML-Dokumenten mithilfe der XPathNavigator-Klasse

Zusätzlich zum Auswählen, Auswerten und Navigieren von XML-Daten kann die XPathNavigator-Klasse in einigen Fällen auch zum Bearbeiten eines XML-Dokuments anhand des Objekts, mit dem es erstellt wurde, verwendet werden.

Die XPathDocument-Klasse ist schreibgeschützt, während die XmlDocument-Klasse bearbeitet werden kann. Daher können XPathNavigator-Objekte, die auf der Grundlage eines XPathDocument-Objekts erstellt wurden, nicht zur Verarbeitung eines XML-Dokuments verwendet werden, während Objekte, die auf der Grundlage eines XmlDocument-Objekts erstellt wurden, für die Verarbeitung von XML-Dokumenten eingesetzt werden können. Die XPathDocument-Klasse sollte nur zum Lesen von XML-Dokumenten verwendet werden. In Fällen, bei denen Sie ein XML-Dokument bearbeiten müssen oder Zugriff auf zusätzliche Funktionen benötigen, die von der XmlDocument-Klasse bereitgestellt werden (z. B. Ereignisbehandlung), sollten Sie die XmlDocument-Klasse verwenden.

Die CanEdit-Eigenschaft der XPathNavigator-Klasse gibt an, ob ein XPathNavigator-Objekt XML-Daten bearbeiten kann.

In der folgenden Tabelle wird der Wert der CanEdit-Eigenschaft für jede Klasse beschrieben.

IXPathNavigable-Implementierung CanEdit-Wert
XPathDocument false
XmlDocument true

Siehe auch