Freigeben über


DataSet- und XmlDataDocument-Synchronisierung

Die ADO.NET DataSet bietet Ihnen eine relationale Darstellung von Daten. Für den hierarchischen Datenzugriff können Sie die im .NET Framework verfügbaren XML-Klassen verwenden. In der Vergangenheit wurden diese beiden Datendarstellungen separat verwendet. Das .NET Framework ermöglicht jedoch den synchronen Zugriff auf die relationale und hierarchische Darstellung von Daten über das DataSet Objekt bzw. das XmlDataDocument Objekt in Echtzeit.

Wenn ein Objekt DataSet mit einem XmlDataDocument synchronisiert wird, arbeiten beide Objekte mit einer einzelnen Datenmenge. Dies bedeutet, dass, wenn eine Änderung am DataSet vorgenommen wird, die Änderung im XmlDataDocument übernommen wird und umgekehrt. Die Beziehung zwischen DataSet und XmlDataDocument schafft große Flexibilität, indem eine einzelne Anwendung, die einen einzelnen Datensatz verwendet, auf die gesamte Suite von Diensten zugreifen kann, die um die DataSet (wie Web Forms und Windows Forms-Steuerelemente sowie Visual Studio .NET-Designer) erstellt wurde. Diese Suite umfasst auch XML-Dienste einschließlich Extensible Stylesheet Language (XSL), XSL-Transformationen (XSLT) und XML-Pfadsprache (XPath). Sie müssen nicht auswählen, auf welche Gruppe von Diensten mit der Anwendung ausgerichtet werden soll; beide sind verfügbar.

Es gibt verschiedene Möglichkeiten, eine DataSet mit einem XmlDataDocument zu synchronisieren. Sie haben folgende Möglichkeiten:

  • Befüllen Sie ein DataSet mit einem Schema (d. h. einer relationalen Struktur) und Daten und synchronisieren Sie es dann mit einem neuen XmlDataDocument. Dadurch wird eine hierarchische Ansicht vorhandener relationaler Daten bereitgestellt. Beispiel:

    Dim dataSet As DataSet = New DataSet
    
    ' Add code here to populate the DataSet with schema and data.
    
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)
    
    DataSet dataSet = new DataSet();
    
    // Add code here to populate the DataSet with schema and data.
    
    XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
    
  • Füllen Sie ein DataSet nur mit einem Schema (z. B. einem stark typisierten DataSet), synchronisieren Sie es mit einem XmlDataDocument und laden Sie dann das XmlDataDocument aus einem XML-Dokument. Dadurch wird eine relationale Ansicht vorhandener hierarchischer Daten bereitgestellt. Die Tabellennamen und Spaltennamen in Ihrem DataSet Schema müssen den Namen der XML-Elemente entsprechen, mit denen sie synchronisiert werden sollen. Bei diesem Prozess wird die Groß- und Kleinschreibung berücksichtigt.

    Beachten Sie, dass das Schema der DataSet einzigen XML-Elemente entsprechen muss, die Sie in Ihrer relationalen Ansicht verfügbar machen möchten. Auf diese Weise können Sie über ein sehr großes XML-Dokument und ein sehr kleines relationales "Fenster" in diesem Dokument verfügen. Das XmlDataDocument dokument behält das gesamte XML bei, obwohl DataSet nur einen kleinen Teil davon offenlegt. (Ein ausführliches Beispiel hierfür finden Sie unter Synchronisieren eines DataSets mit einem XmlDataDocument.)

    Das folgende Codebeispiel zeigt die Schritte zum Erstellen DataSet und Auffüllen des Schemas und anschließendes Synchronisieren mit einem XmlDataDocument. Beachten Sie, dass das DataSet Schema nur mit den Elementen XmlDataDocument übereinstimmen muss, die Sie mithilfe des DataSet verfügbar machen möchten.

    Dim dataSet As DataSet = New DataSet
    
    ' Add code here to populate the DataSet with schema, but not data.
    
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)
    xmlDoc.Load("XMLDocument.xml")
    
    DataSet dataSet = new DataSet();
    
    // Add code here to populate the DataSet with schema, but not data.
    
    XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
    xmlDoc.Load("XMLDocument.xml");
    

    Sie können eine XmlDataDocument Datei nicht laden, wenn sie mit einer DataSet Datendatei synchronisiert wird. In diesem Fall wird eine Ausnahme ausgelöst.

  • Erstellen Sie ein neues XmlDataDocument Dokument, laden Sie es aus einem XML-Dokument, und greifen Sie dann mithilfe der DataSet Eigenschaft von XmlDataDocument auf die relationale Ansicht der Daten zu. Sie müssen das Schema des DataSet festlegen, bevor Sie Daten im XmlDataDocumentDataSet anzeigen können. Auch hier müssen die Tabellennamen und Spaltennamen in Ihrem DataSet Schema mit den Namen der XML-Elemente übereinstimmen, mit denen sie synchronisiert werden sollen. Bei diesem Prozess wird die Groß- und Kleinschreibung berücksichtigt.

    Das folgende Codebeispiel zeigt, wie Sie auf die relationale Ansicht der Daten in einem XmlDataDocument zugreifen.

    Dim xmlDoc As XmlDataDocument = New XmlDataDocument
    Dim dataSet As DataSet = xmlDoc.DataSet
    
    ' Add code here to create the schema of the DataSet to view the data.
    
    xmlDoc.Load("XMLDocument.xml")
    
    XmlDataDocument xmlDoc = new XmlDataDocument();
    DataSet dataSet = xmlDoc.DataSet;
    
    // Add code here to create the schema of the DataSet to view the data.
    
    xmlDoc.Load("XMLDocument.xml");
    

Ein weiterer Vorteil der Synchronisierung eines XmlDataDocument mit einem DataSet besteht darin, dass die Integrität eines XML-Dokuments beibehalten wird. Wenn die DataSet Daten mithilfe von ReadXml aus einem XML-Dokument aufgefüllt werden, kann sich dies erheblich vom ursprünglichen XML-Dokument unterscheiden, wenn die Daten als XML-Dokument WriteXml zurückgeschrieben werden. Dies liegt daran, dass die DataSet Formatierung nicht beibehalten wird, z. B. Leerzeichen oder hierarchische Informationen, z. B. die Elementreihenfolge, aus dem XML-Dokument. Dies DataSet enthält auch keine Elemente aus dem XML-Dokument, die ignoriert wurden, da sie nicht mit dem Schema des Datasets übereinstimmen. Die Synchronisierung eines XmlDataDocument mit einem DataSet ermöglicht es, die Formatierungs- und hierarchische Elementstruktur des ursprünglichen XML-Dokuments im XmlDataDocument beizubehalten, während das DataSet nur Daten und Schemainformationen enthält, die für das DataSet geeignet sind.

Bei der Synchronisierung eines DataSet mit einem XmlDataDocument können sich die Ergebnisse unterscheiden, je nachdem, ob Ihre DataRelation Objekte geschachtelt sind. Weitere Informationen finden Sie unter Nesting DataRelations.

In diesem Abschnitt

Synchronisieren eines DataSets mit einem XmlDataDocument Veranschaulicht die Synchronisierung eines stark typisierten DataSets mit minimalem Schema mit einem XmlDataDocument.

Ausführen einer XPath-Abfrage für ein DataSet Veranschaulicht das Ausführen einer XPath-Abfrage für den Inhalt eines DataSets.

Anwenden einer XSLT-Transformation auf ein DataSet Veranschaulicht das Anwenden einer XSLT-Transformation auf den Inhalt eines DataSets.

Verwenden von XML in einem DataSet Beschreibt, wie DataSet mit XML als Datenquelle interagiert, einschließlich des Ladens und Beibehaltens des Inhalts eines DataSet als XML-Daten.

Verschachtelung von DataRelations Erläutert die Wichtigkeit geschachtelter DataRelation Objekte, wenn der Inhalt einer DataSet als XML-Datensatz dargestellt wird, und beschreibt, wie diese Beziehungen erstellt werden.

DataSets, DataTables und DataViews Beschreibt das DataSet und wie sie zum Verwalten von Anwendungsdaten und zur Interaktion mit Datenquellen, einschließlich relationaler Datenbanken und XML, verwendet werden.

XmlDataDocument Enthält Referenzinformationen zur XmlDataDocument Klasse.

Siehe auch