Udostępnij za pośrednictwem


Synchronizacja elementów DataSet i XmlDataDocument

DataSet ADO.NET zapewnia relacyjne przedstawienie danych. W przypadku dostępu do danych hierarchicznych można użyć klas XML dostępnych w programie .NET Framework. W przeszłości te dwie reprezentacje danych były używane oddzielnie. Jednak program .NET Framework umożliwia synchroniczny dostęp w czasie rzeczywistym do relacyjnych i hierarchicznych reprezentacji danych odpowiednio za pośrednictwem obiektu DataSet i XmlDataDocument obiektu.

Gdy zestaw danych jest synchronizowany z obiektem XmlDataDocument, oba obiekty pracują z pojedynczym zestawem danych. Oznacza to, że jeśli w zestawie danych zostanie wprowadzona zmiana, zmiana zostanie odzwierciedlona w kodzie XmlDataDocument i na odwrót. Relacja między zestawem danych i elementem XmlDataDocument zapewnia dużą elastyczność dzięki umożliwieniu jednej aplikacji przy użyciu jednego zestawu danych w celu uzyskania dostępu do całego zestawu usług utworzonych wokół zestawu danych (takich jak kontrolki Web Forms i Windows Forms oraz projektantów programu Visual Studio .NET), a także zestawu usług XML, w tym języka Extensible Stylesheet Language (XSL), Przekształcenia XSL (XSLT) i język ścieżki XML (XPath). Nie musisz wybierać, który zestaw usług ma być przeznaczony dla aplikacji; Oba są dostępne.

Istnieje kilka sposobów synchronizowania zestawu danych z dokumentem XmlDataDocument. Masz następujące możliwości:

  • Wypełnij zestaw danych za pomocą schematu (czyli struktury relacyjnej) i danych, a następnie zsynchronizuj go z nową funkcją XmlDataDocument. Zapewnia to hierarchiczny widok istniejących danych relacyjnych. Na przykład:

    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);  
    
  • Wypełnij zestaw danych tylko przy użyciu schematu (na przykład silnie typizowanego elementu DataSet), zsynchronizuj go z dokumentem XmlDataDocument, a następnie załaduj dokument XMLDataDocument. Zapewnia to relacyjny widok istniejących danych hierarchicznych. Nazwy tabel i nazwy kolumn w schemacie Zestawu danych muszą być zgodne z nazwami elementów XML, z którymi mają być synchronizowane. To dopasowanie jest uwzględniane w wielkości liter.

    Należy pamiętać, że schemat zestawu danych musi być zgodny tylko z elementami XML, które chcesz uwidocznić w widoku relacyjnym. W ten sposób można mieć bardzo duży dokument XML i bardzo małe relacyjne "okno" w tym dokumencie. Dokument XmlDataDocument zachowuje cały dokument XML, mimo że zestaw Danych uwidacznia tylko niewielką jego część. (Aby uzyskać szczegółowy przykład tego, zobacz Synchronizowanie zestawu danych z elementem XmlDataDocument).

    Poniższy przykład kodu przedstawia kroki tworzenia zestawu danych i wypełniania jego schematu, a następnie synchronizowanie go z dokumentem XmlDataDocument. Należy pamiętać, że schemat zestawu danych musi być zgodny tylko z elementami z elementu XmlDataDocument , które chcesz uwidocznić przy użyciu elementu DataSet.

    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");  
    

    Nie można załadować elementu XmlDataDocument, jeśli jest zsynchronizowany z zestawem danych zawierającym dane. Zostanie zgłoszony wyjątek.

  • Utwórz nową dokumentację XmlDataDocument i załaduj ją z dokumentu XML, a następnie uzyskaj dostęp do widoku relacyjnego danych przy użyciu właściwości DataSet obiektu XmlDataDocument. Przed wyświetleniem dowolnego z danych w obiekcie XmlDataDocument należy ustawić schemat zestawu danych przy użyciu elementu DataSet. Ponownie nazwy tabel i nazwy kolumn w schemacie Zestawu danych muszą być zgodne z nazwami elementów XML, z którymi mają być synchronizowane. To dopasowanie jest uwzględniane w wielkości liter.

    Poniższy przykład kodu pokazuje, jak uzyskać dostęp do widoku relacyjnego danych w kodzie XmlDataDocument.

    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");  
    

Kolejną zaletą synchronizacji elementu XmlDataDocument z zestawem danych jest zachowanie wierności dokumentu XML. Jeśli zestaw danych jest wypełniany z dokumentu XML przy użyciu narzędzia ReadXml, gdy dane są zapisywane z powrotem jako dokument XML przy użyciu narzędzia WriteXml, mogą się znacznie różnić od oryginalnego dokumentu XML. Dzieje się tak, ponieważ zestaw danych nie obsługuje formatowania, takiego jak białe znaki lub informacje hierarchiczne, takie jak kolejność elementów, z dokumentu XML. Zestaw danych nie zawiera również elementów z dokumentu XML, które zostały zignorowane, ponieważ nie są zgodne ze schematem zestawu danych. Synchronizowanie elementu XmlDataDocument z zestawem danych umożliwia formatowanie i hierarchiczną strukturę oryginalnego dokumentu XML, która ma być przechowywana w obiekcie XmlDataDocument, podczas gdy zestaw danych zawiera tylko dane i informacje o schemacie odpowiednie dla elementu DataSet.

Podczas synchronizowania zestawu danych z elementem XmlDataDocument wyniki mogą się różnić w zależności od tego, czy DataRelation obiekty są zagnieżdżone. Aby uzyskać więcej informacji, zobacz Zagnieżdżanie danychRelations.

W tej sekcji

Synchronizowanie elementu DataSet z elementem XmlDataDocument
Demonstruje synchronizowanie silnie typizowanego zestawu danych z minimalnym schematem z dokumentem XmlDataDocument.

Wykonywanie zapytania XPath w elemencie DataSet
Demonstruje wykonywanie zapytania XPath w zawartości zestawu danych.

Stosowanie transformacji XSLT do elementu DataSet
Demonstruje zastosowanie przekształcenia XSLT do zawartości zestawu danych.

Używanie języka XML w elemencie DataSet
Opisuje sposób interakcji zestawu danych DataSet z plikiem XML jako źródłem danych, w tym ładowaniem i utrwalaniem zawartości elementu DataSet jako danych XML.

Zagnieżdżanie elementów DataRelation
Omawia znaczenie zagnieżdżonych obiektów DataRelation podczas reprezentowania zawartości zestawu danych jako danych XML i opisuje sposób tworzenia tych relacji.

Elementy DataSet, DataTable i DataView
Opisuje zestaw danych i sposób używania go do zarządzania danymi aplikacji oraz interakcji ze źródłami danych, w tym relacyjnymi bazami danych i xml.

XmlDataDocument
Zawiera informacje referencyjne dotyczące klasy XmlDataDocument .

Zobacz też