Синхронизация набора данных и XmlDataDocument

ADO.NET DataSet обеспечивает реляционное представление данных. Для доступа к иерархическим данным можно использовать классы XML, доступные на платформе .NET Framework. Исторически эти два представления данных использовались раздельно. Однако платформа .NET Framework обеспечивает синхронный доступ как к реляционным, так и иерархическим представлениям данных через объект DataSet и XmlDataDocument объект соответственно.

При синхронизации набора данных с XmlDataDocument оба объекта работают с одним набором данных. Это означает, что если в набор данных внесены изменения, это изменение будет отражено в XmlDataDocument и наоборот. Связь между Набором данных и XmlDataDocument обеспечивает большую гибкость, позволяя одному приложению, используя один набор данных, получить доступ ко всему набору служб, созданных вокруг набора данных (например, веб-формы и элементов управления Windows Forms, и конструкторов .NET Visual Studio), а также набора xml-служб, включая расширяемый язык таблицы стилей (XSL), Преобразования XSL (XSLT) и язык XML-пути (XPath). Не обязательно выбирать конкретный набор служб для приложения. Доступны оба.

Существует несколько способов синхронизации набора данных с XmlDataDocument. Вы можете:

  • Заполните набор данных схемой (то есть реляционной структурой) и данными, а затем синхронизируйте их с новым xmlDataDocument. Это обеспечивает иерархическое представление существующих реляционных данных. Например:

    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);  
    
  • Заполните набор данных только схемой (например, строго типизированный набор данных), синхронизируйте его с XmlDataDocument, а затем загрузите XmlDataDocument из XML-документа. Это обеспечивает реляционное представление существующих иерархических данных. Имена таблиц и имена столбцов в схеме DataSet должны соответствовать именам XML-элементов, с которыми они синхронизируются. Это соответствие с учетом регистра.

    Обратите внимание, что схема набора данных должна соответствовать только XML-элементам, которые необходимо предоставить в реляционном представлении. Таким образом, может существовать очень большой XML-документ и очень малое реляционное «окно» для этого документа. XmlDataDocument сохраняет весь XML-документ, хотя набор данных предоставляет только небольшую часть документа. (Подробный пример этого см. в разделе Синхронизация набора данных с xmlDataDocument.)

    В следующем примере кода показаны шаги по созданию набора данных и заполнению схемы, а затем синхронизации его с xmlDataDocument. Обратите внимание, что схема Набора данных должна соответствовать только элементам из XmlDataDocument , которые необходимо предоставить с помощью набора данных.

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

    Невозможно загрузить XmlDataDocument, если он синхронизирован с набором данных, содержащими данные. Вызывается исключение.

  • Создайте новый xmlDataDocument и загрузите его из XML-документа, а затем получите доступ к реляционному представлению данных с помощью свойства DataSet объекта XmlDataDocument. Перед просмотром любого из данных в XmlDataDocument с помощью набора данных необходимо задать схему набора данных. Опять же, имена таблиц и столбцов в схеме DataSet должны совпадать с именами XML-элементов, с которыми они синхронизируются. Это соответствие с учетом регистра.

    В следующем примере кода показано, как получить доступ к реляционному представлению данных в 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");  
    

Еще одним преимуществом синхронизации XmlDataDocument с набором данных является сохранение точности XML-документа. Если набор данных заполняется из XML-документа с помощью ReadXml, при записи данных обратно в XML-документ с помощью WriteXml он может значительно отличаться от исходного XML-документа. Это связано с тем, что Набор данных не поддерживает форматирование, например пробелы или иерархические сведения, например порядок элементов, из XML-документа. Набор данных также не содержит элементы из XML-документа, которые были проигнорированы, так как они не соответствовали схеме набора данных. Синхронизация XmlDataDocument с набором данных позволяет поддерживать структуру форматирования и иерархического элемента исходного XML-документа в XmlDataDocument, а набор данных содержит только данные и сведения о схеме, соответствующие набору данных.

При синхронизации набора данных с XmlDataDocument результаты могут отличаться в зависимости от того, вложены ли объекты DataRelation . Дополнительные сведения см. в разделе "Вложенные dataRelations".

В этом разделе

Синхронизация DataSet с XmlDataDocument
Демонстрирует синхронизацию строго типизированного набора данных с минимальной схемой с XmlDataDocument.

Выполнение запроса XPath к DataSet
Демонстрирует выполнение запроса XPath на содержимое набора данных.

Применение преобразования XSLT к DataSet
Демонстрирует применение преобразования XSLT к содержимому набора данных.

Использование XML в наборах данных
Описывает, как Набор данных взаимодействует с XML в качестве источника данных, включая загрузку и сохранение содержимого набора данных в виде XML-данных.

Вложенность объектов DataRelation
Обсуждает важность вложенных объектов DataRelation при представлении содержимого набора данных в виде XML-данных и описывает, как создать эти отношения.

Наборы данных, таблицы данных и объекты DataView
Описывает набор данных и способы управления данными приложения и взаимодействия с источниками данных, включая реляционные базы данных и XML.

XmlDataDocument
Содержит справочные сведения о классе XmlDataDocument .

См. также