Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die XML Document Object Model (DOM)-Klasse ist eine Speicherdarstellung eines XML-Dokuments. Mit dem DOM können Sie ein XML-Dokument programmgesteuert lesen, bearbeiten und ändern. Die XmlReader-Klasse liest auch XML; Es bietet jedoch nicht zwischengespeicherten, vorwärtsgeschützten, schreibgeschützten Zugriff. Dies bedeutet, dass es keine Funktionen zum Bearbeiten der Werte eines Attributs oder Inhalts eines Elements oder die Möglichkeit zum Einfügen und Entfernen von Knoten mit dem XmlReader gibt. Die Bearbeitung ist die primäre Funktion des DOM. Es ist die gängige und strukturierte Art und Weise, wie XML-Daten im Arbeitsspeicher dargestellt werden, obwohl die tatsächlichen XML-Daten linear gespeichert werden, wenn sie in einer Datei oder aus einem anderen Objekt stammen. Im Folgenden sind XML-Daten aufgeführt.
Eingabe
<?xml version="1.0"?>
<books>
<book>
<author>Carson</author>
<price format="dollar">31.95</price>
<pubdate>05/01/2001</pubdate>
</book>
<pubinfo>
<publisher>MSPress</publisher>
<state>WA</state>
</pubinfo>
</books>
Die folgende Abbildung zeigt, wie der Arbeitsspeicher strukturiert ist, wenn diese XML-Daten in die DOM-Struktur gelesen werden.
XML-Dokumentstruktur
Innerhalb der XML-Dokumentstruktur stellt jeder Kreis in dieser Abbildung einen Knoten dar, der als XmlNode-Objekt bezeichnet wird. Das XmlNode-Objekt ist das grundlegende Objekt in der DOM-Struktur. Die XmlDocument-Klasse , die XmlNode erweitert, unterstützt Methoden zum Ausführen von Vorgängen im Gesamten des Dokuments (z. B. Laden in den Arbeitsspeicher oder Speichern des XML-Codes in einer Datei). Darüber hinaus bietet XmlDocument eine Möglichkeit, die Knoten im gesamten XML-Dokument anzuzeigen und zu bearbeiten. Sowohl XmlNode als auch XmlDocument haben Leistungs- und Benutzerfreundlichkeitsverbesserungen und weisen Methoden und Eigenschaften auf:
Zugreifen auf DOM-spezifische Knoten, z. B. Elementknoten, Entitätsverweisknoten usw.
Rufen Sie zusätzlich zu den Informationen, die der Knoten enthält, auch ganze Knoten ab, z. B. den Text in einem Elementknoten.
Hinweis
Wenn für eine Anwendung die vom DOM bereitgestellten Struktur- oder Bearbeitungsfunktionen nicht erforderlich sind, bieten die XmlReader - und XmlWriter-Klassen nicht zwischengespeicherten, vorwärtsgeschützten Streamzugriff auf XML. Weitere Informationen finden Sie unter XmlReader und XmlWriter.
Node-Objekte verfügen über eine Reihe von Methoden und Eigenschaften sowie über grundlegende und gut definierte Merkmale. Einige dieser Merkmale sind:
Knoten haben einen einzigen übergeordneten Knoten. Ein übergeordneter Knoten ist ein Knoten, der sich direkt über ihnen befindet. Die einzigen Knoten, die nicht über ein übergeordnetes Element verfügen, ist der Dokumentstamm, da es sich um den Knoten der obersten Ebene handelt und das Dokument selbst und Dokumentfragmente enthält.
Viele Knoten verfügen über mehrere direkt untergeordnete Knoten. Dies sind Knoten, die sich genau eine Ebene darunter befinden. In der folgenden Liste sind Knotentypen aufgeführt, die über untergeordnete Knoten verfügen können.
Dokument
DocumentFragment
EntityReference (Entität-Referenz)
Element
Attribut
Die Knoten "XmlDeclaration", "Notation", " Entity", "CDATASection", "Text", "Comment", "ProcessingInstruction" und " DocumentType " weisen keine untergeordneten Knoten auf.
Knoten, die sich auf derselben Ebene befinden und im Diagramm durch die Buch und Pubinfo-Knoten dargestellt werden, sind Geschwisterknoten.
Ein Merkmal des DOM ist die Behandlung von Attributen. Attribute sind keine Knoten, die übergeordneten, untergeordneten oder nebengeordneten Beziehungen angehören. Attribute werden als Eigenschaft des Elementknotens betrachtet und bestehen aus einem Namen und einem Wertpaar. Wenn Sie beispielsweise über XML-Daten verfügen, die aus format="dollar
" und dem Element price
bestehen, stellt das Wort format
den Namen dar und format
ist der Wert des Attributs dollar
. Um das format="dollar"
Attribut des Preisknotens abzurufen, rufen Sie die GetAttribute-Methode auf, wenn sich der Cursor am price
Elementknoten befindet. Weitere Informationen finden Sie unter "Zugreifen auf Attribute" im DOM.
Da XML in den Arbeitsspeicher eingelesen wird, werden Knoten erstellt. Nicht alle Knoten sind jedoch derselbe Typ. Ein Element in XML weist unterschiedliche Regeln und Syntax auf als eine Verarbeitungsanweisung. Daher wird, da verschiedene Daten gelesen werden, jedem Knoten ein Knotentyp zugewiesen. Dieser Knotentyp bestimmt die Merkmale und Funktionen des Knotens.
Weitere Informationen zu den Im Arbeitsspeicher generierten Knotentypen finden Sie unter Typen von XML-Knoten. Weitere Informationen zu den objekten, die in der Knotenstruktur erstellt wurden, finden Sie unter Zuordnen der Objekthierarchie zu XML-Daten.
Microsoft hat die APIs erweitert, die im World Wide Web Consortium (W3C) DOM Level 1 und Level 2 verfügbar sind, um die Arbeit mit einem XML-Dokument zu vereinfachen. Während die W3C-Standards vollständig unterstützt werden, fügen die zusätzlichen Klassen, Methoden und Eigenschaften Funktionen hinzu, die über die Verwendung des W3C-XML-DOM hinausgehen. Mit neuen Klassen können Sie auf relationale Daten zugreifen, sodass Sie Methoden für die Synchronisierung mit ADO.NET Daten und gleichzeitiges Verfügbarmachen von Daten als XML erhalten. Weitere Informationen finden Sie unter Synchronisieren eines DataSets mit einem XmlDataDocument.
Das DOM ist am nützlichsten zum Lesen von XML-Daten in den Arbeitsspeicher, um seine Struktur zu ändern, Knoten hinzuzufügen oder zu entfernen oder die Daten, die von einem Knoten gehalten werden, wie im Text, der in einem Element enthalten ist, zu ändern. Andere Klassen sind jedoch schneller als das DOM in anderen Szenarien verfügbar. Verwenden Sie für schnellen, nicht zwischengespeicherten, vorwärtsgeschützten Datenstromzugriff auf XML den XmlReader und XmlWriter. Wenn Sie zufälligen Zugriff mit einem Cursormodell und XPath benötigen, verwenden Sie die XPathNavigator-Klasse .