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. 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 DataSet tylko schematem (na przykład silnie typizowanym DataSet), zsynchronizuj go z XmlDataDocument, a następnie załaduj XmlDataDocument z dokumentu XML. 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 uwzględnia wielkość 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 uwzględnia wielkość 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 DataSet z dokumentem XmlDataDocument wyniki mogą się różnić w zależności od tego, czy obiekty DataRelation są zagnieżdżone. Aby uzyskać więcej informacji, zobacz Zagnieżdżanie RelacjeDanych.

W tej Sekcji

Synchronizowanie zestawu danych za pomocą elementu XmlDataDocument
Demonstruje synchronizowanie silnie typizowanego zestawu danych z minimalnym schematem z dokumentem XmlDataDocument.

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

Zastosowanie przekształcenia XSLT do zestawu danych
Demonstruje zastosowanie przekształcenia XSLT do zawartości zestawu danych.

Używanie kodu XML w zestawie danych
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 danychRelacji
Omawia znaczenie zagnieżdżonych obiektów DataRelation podczas reprezentowania zawartości zestawu danych jako danych XML i opisuje sposób tworzenia tych relacji.

Zestawy danych, tabele danych i elementy 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 także