XML lesen mit dem Document Object Model

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Mit der Klasse XmlReader, die wir im Artikel “XML-Dokumente schnell lesen mit XmlReader” vorgestellt haben, können Sie XML-Dokumente schnell sequenziell durchlaufen. Dies eignet sich vor allem für den Zugriff auf sehr große XML-Dokumente. Wenn Sie selektiver auf die Inhalte des XML-Dokuments zugreifen wollen, können Sie das Document Object Model nutzen. Implementierungen dieser Schnittstelle, die kurz DOM genannt wird, gibt es für fast alle Programmiersprachen – so auch für die von .NET. Dieser Artikel zeigt, wie Sie die Klassen, Eigenschaften und Methoden des Document Object Models für den Zugriff auf XML-Dokumente nutzen.

DOM im Gegensatz zu XmlReader und XmlWriter

Einer der wichtigsten Unterschiede des Document Object Model im Vergleich zur XmlReader-Klasse ist, dass Sie damit nicht nur lesend, sondern auch schreibend auf die XML-Dokumente zugreifen können. Das heißt, wenn Sie ein Element gefunden haben, dessen Inhalt Sie ändern möchten, dann können Sie das direkt mit den Methoden des Document Object Models erledigen. Sie können damit nicht nur Elemente bearbeiten, sondern auch neue Elemente hinzufügen oder bestehende Elemente löschen. Und natürlich können Sie damit auch komplett neue XML-Dokumente erstellen und mit Daten füllen. Dazu steht allerdings auch die Klasse XmlWriter zur Verfügung, die wir im Artikel XML-Dokumente erstellen mit XmlWriter vorgestellt haben.

Mit dem Document Object Model laden Sie das komplette XML-Dokument in den Speicher, weshalb einzelne Elemente gezielt angesteuert werden können. Während beim XmlReader für alle Elemente die gleichen Eigenschaften abgefragt werden können und je nach Elementtyp mal die eine, mal die andere Eigenschaft Werte zurückliefert, liest das Document Object Model die einzelnen Elemente des XML-Dokuments mit einem entsprechenden Objekttyp ein.

XML-Baum

Intern bildet DOM das XML-Dokument als Baumstruktur ab. Das kann man sich so vorstellen, dass wir ein Stammelement haben, das an der Spitze sitzt. Darunter gibt es dann ein oder mehrere untergeordnete Elemente, die wiederum untergeordnete Elemente haben, bis dann irgendwann Werte in den Elementen stehen – diese landen immer am anderen Ende des Baums. Einen Baum für unser Beispiel-XML-Dokument finden Sie in Bild 1.

Baum eines XML-Dokuments

Bild 1: Baum eines XML-Dokuments

Dieser bildet die aus Platzgründen gekürzte Version des XML-Dokuments aus Bild 2 ab.

Ausschnitt des Dokuments entsprechend dem Baum aus der ersten Abbildung

Bild 2: Ausschnitt des Dokuments entsprechend dem Baum aus der ersten Abbildung

Verweis auf den Namespace System.Xml

Bevor wir ein Objekt auf Basis der Klasse XmlDocument nutzen können, müssen wir einen Verweis auf den folgenden Namespace zur Klasse hinzufügen:

Imports System.Xml

Deklarieren und Initialisieren von XmlDocument

Mit den folgenden beiden Anweisungen deklarieren und initialisieren wir ein Objekt namens objXML mit dem Typ XmlDocument:

Dim objXML As XmlDocument
objXML = New XmlDocument

Laden des XML-Dokuments

Für das Laden eines XML-Dokuments bietet die XmlDocument-Klasse zwei Methoden an:

  • Load: Erwartet den Pfad des zu ladenden XML-Dokuments als Parameter, falls es sich um eine Datei handelt. Sie können auch eine URL angeben. Überladungen erlauben auch das Laden aus einem Stream-, einem TextReader– oder einem XmlReader-Objekt.
  • LoadXml: Erwartet das XML-Dokument als String-Parameter.

Die folgenden Anweisungen erzeugen ein XmlDocument-Objekt, laden das Dokument Bestellverwaltung.xml hinein und geben den Inhalt über die Eigenschaft OuterXml aus:

Dim objXML As XmlDocument
objXML = New XmlDocument
objXML.Load("C:\...\Bestellverwaltung.xml")
Debug.Print(objXML.OuterXml)

Die Ausgabe mit InnerXml liefert für das XmlDocument selbst übrigens das gleiche Ergebnis wie OuterXml.

 

Schreibe einen Kommentar