Синхронизация набора данных и 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 .