Integration von XML in relationale Daten und ADO.NET

Die XmlDataDocument-Klasse ist eine abgeleitete Klasse von XmlDocument und enthält XML-Daten. Der Vorteil von XmlDataDocument liegt im Herstellen einer Brücke zwischen relationalen und hierarchischen Daten. Ein XmlDocument kann an ein DataSet gebunden werden, und Änderungen, die an den Daten in den beiden Klassen vorgenommen wurden, können in beiden Klassen synchronisiert werden. Ein an ein DataSet gebundenes XmlDocument ermöglicht die Integration von XML in relationale Daten, und die Daten müssen nicht entweder in XML oder in einem relationalen Format dargestellt werden. Sie können beide Möglichkeiten nutzen und sind auf nicht eine einzige Darstellung der Daten festgelegt.

Folgende Vorteile ergeben sich, wenn die Daten in zwei Ansichten zur Verfügung stehen:

  • Der strukturierte Teil eines XML-Dokuments kann einem Dataset zugeordnet werden und effizient gespeichert, indiziert und durchsucht werden.
  • Transformationen, Überprüfungen und die Navigation können mit einem Cursormodell effizient in den relational gespeicherten XML-Daten ausgeführt werden. Manchmal kann dies mit relationalen Strukturen effektiver ausgeführt werden als anhand von XML-Code einem XmlDocument-Modell.
  • Im DataSet kann ein Teil des XML-Codes gespeichert werden. Das heißt, dass Sie mit Hilfe von XPath oder XslTransform nur die für Sie relevanten Elemente und Attribute in einem DataSet speichern können. Dort können Änderungen an der kleineren, gefilterten Teilmenge der Daten vorgenommen werden, und diese Änderungen werden anschließend in den umfangreicheren Daten von XmlDataDocument verbreitet.

Sie können auch eine Transformation von Daten vornehmen, die aus SQL Server in das DataSet geladen wurden. Eine andere Möglichkeit besteht im Binden von nach Klasse und Stil verwalteten WinForm- und WebForm-Steuerelementen aus .NET Framework an ein DataSet, das aus einem XML-Eingabestream aufgefüllt wurde.

Neben der Unterstützung von XslTransform legt ein XmlDataDocument relationale Daten für XPath-Abfragen und Überprüfungen offen. Grundsätzlich sind alle XML-Dienste für relationale Daten verfügbar, und relationale Funktionen wie Steuerelementbindung, CODEGEN usw. sind für eine strukturierte Projektion von XML verfügbar, ohne die XML-Integrität zu beeinträchtigen.

Da XmlDataDocument aus einem XmlDocument vererbt wird, enthält es eine Implementierung des W3C-Dokumentobjektmodells. Durch die Tatsache, dass das XmlDataDocument einem DataSet zugeordnet ist und eine Teilmenge seiner Daten darin speichert, wird seine Verwendung als XmlDocument in keiner Weise eingeschränkt oder verändert. Code, der zur Verarbeitung von XmlDocument geschrieben wurde, funktioniert unverändert mit XmlDataDocument. Das DataSet bietet eine relationale Ansicht derselben Daten durch die Definition von Tabellen, Spalten, Beziehungen und Einschränkungen. Es ist ein eigenständiger, in den Arbeitspeicher geladener Benutzerdatenspeicher.

In der folgenden Abbildung werden die verschiedenen Beziehungen zwischen XML-Daten und dem DataSet sowie dem XmlDataDocument dargestellt.

Aus der Abbildung geht hervor, dass XML-Daten direkt in ein DataSet geladen werden können. Dadurch kann XML direkt in relationaler Weise bearbeitet werden. XML kann auch in eine abgeleitete Klasse des Dokumentobjektmodells geladen werden, d. h. in ein XmlDataDocument, und anschließend erfolgt das Laden ins DataSet sowie die Synchronisierung. Da das DataSet und das XmlDataDocument anhand einer einzigen Datengruppe synchronisiert werden, werden Änderungen an den Daten des eines Speichers im anderen Speicher widergespiegelt.

Das XmlDataDocument erbt alle Funktionen zum Bearbeiten und Navigieren vom XmlDocument. In bestimmten Situationen ist es sinnvoller, das XmlDataDocument und seine geerbten Funktionen zu verwenden und eine Synchronisierung mit dem DataSet auszuführen, anstatt XML direkt in das DataSet zu laden. In der folgenden Tabelle sind die Punkte aufgeführt, die bei der Auswahl der geeigneten Methode zum Laden von DataSet zu berücksichtigen sind.

Direktes Laden von XML in ein DataSet Synchronisieren von XmlDataDocument mit einem DataSet
Datenabfragen im DataSet können einfacher mit SQL ausgeführt werden als mit XPath. Für Daten im DataSet sind XPath-Abfragen erforderlich.
Das Beibehalten der Elementreihenfolge in der Quell-XML ist nicht funktionsentscheidend. Das Beibehalten der Elementreihenfolge in der Quell-XML ist funktionsentscheidend.
Leerraum zwischen Elementen und Formatierung braucht in der Quell-XML nicht beibehalten zu werden. Die Beibehaltung von Leerraum und Formatierung in der Quell-XML ist funktionsentscheidend.

Wenn das direkte Laden und Schreiben von XML in ein DataSet und aus einem solchen Ihren Anforderungen entspricht, finden Sie Informationen unter Laden eines DataSets aus XML und Schreiben eines DataSets als XML-Daten.

Wenn das Laden des DataSet aus einem XmlDataDocument Ihren Anforderungen entspricht, finden Sie weitere Informationen unter Synchronisieren eines DataSets mit einem XmlDataDocument.

Siehe auch

XML und das DataSet