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

ADO.NET DataSet обеспечивает реляционное представление данных.The ADO.NET DataSet provides you with a relational representation of data. Для доступа к иерархическим данным можно использовать классы XML, доступные на платформе .NET Framework.For hierarchical data access, you can use the XML classes available in the .NET Framework. Исторически эти два представления данных использовались раздельно.Historically, these two representations of data have been used separately. Однако .NET Framework обеспечивает синхронный доступ в режиме реального времени к реляционным и иерархическим представлениям данных через объект DataSet и XmlDataDocument объект соответственно.However, the .NET Framework enables real-time, synchronous access to both the relational and hierarchical representations of data through the DataSet object and the XmlDataDocument object, respectively.

Если набор данных синхронизирован с XmlDataDocument, то оба объекта работают с одним набором данных.When a DataSet is synchronized with an XmlDataDocument, both objects are working with a single set of data. Это означает, что если в набор данныхвнесено изменение, это изменение будет отражено в объекте XmlDataDocumentи наоборот.This means that if a change is made to the DataSet, the change will be reflected in the XmlDataDocument, and vice versa. Связь между набором данных и объектом XmlDataDocument создает большую гибкость, позволяя единому приложению использовать единый набор данных для доступа ко всему набору служб, созданных на основе набора данных (например, веб-формы и Windows Forms элементы управления и конструкторы Visual Studio .NET), а также набор служб XML, включая расширенный язык таблиц стилей (XSL), преобразования XSL (XSLT) и язык XML Path (XPath).The relationship between the DataSet and the XmlDataDocument creates great flexibility by allowing a single application, using a single set of data, to access the entire suite of services built around the DataSet (such as Web Forms and Windows Forms controls, and Visual Studio .NET designers), as well as the suite of XML services including Extensible Stylesheet Language (XSL), XSL Transformations (XSLT), and XML Path Language (XPath). Не обязательно выбирать конкретный набор служб для приложения. Доступны оба.You do not have to choose which set of services to target with the application; both are available.

Существует несколько способов синхронизации набора данных с XmlDataDocument.There are several ways that you can synchronize a DataSet with an XmlDataDocument. Можно выполнить следующие действия:You can:

  • Заполните набор данных схемой (то есть реляционной структурой) и данными, а затем синхронизируйте его с новым XmlDataDocument.Populate a DataSet with schema (that is, a relational structure) and data and then synchronize it with a new XmlDataDocument. Это обеспечивает иерархическое представление существующих реляционных данных.This provides a hierarchical view of existing relational data. Например:For example:

    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-документа.Populate a DataSet with schema only (such as a strongly typed DataSet), synchronize it with an XmlDataDocument, and then load the XmlDataDocument from an XML document. Это обеспечивает реляционное представление существующих иерархических данных.This provides a relational view of existing hierarchical data. Имена таблиц и столбцов в схеме набора данных должны совпадать с именами XML-элементов, с которыми они должны быть синхронизированы.The table names and column names in your DataSet schema must match the names of the XML elements that you want them synchronized with. Это соответствие с учетом регистра.This matching is case-sensitive.

    Обратите внимание, что схема набора данных должна соответствовать только тем XML-элементам, которые необходимо предоставить в реляционном представлении.Note that the schema of the DataSet only needs to match the XML elements that you want to expose in your relational view. Таким образом, может существовать очень большой XML-документ и очень малое реляционное «окно» для этого документа.This way, you can have a very large XML document and a very small relational "window" on that document. Объект XmlDataDocument сохраняет весь XML-документ, несмотря на то, что набор данных предоставляет только небольшую часть.The XmlDataDocument preserves the entire XML document even though the DataSet only exposes a small portion of it. (Подробный пример см. в разделе синхронизация набора данных с XmlDataDocument.)(For a detailed example of this, see Synchronizing a DataSet with an XmlDataDocument.)

    В следующем примере кода показаны шаги для создания набора данных и заполнения его схемы, а затем выполняется его синхронизация с XmlDataDocument.The following code example shows the steps for creating a DataSet and populating its schema, then synchronizing it with an XmlDataDocument. Обратите внимание, что схема набора данных должна соответствовать только элементам объекта XmlDataDocument , которые необходимо предоставить с помощью набора данных.Note that the DataSet schema only needs to match the elements from the XmlDataDocument that you want to expose using the 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");  
    

    Невозможно загрузить объект XmlDataDocument , если он синхронизирован с набором данных, содержащим данные.You cannot load an XmlDataDocument if it is synchronized with a DataSet that contains data. В таком случае возникнет исключение.An exception will be thrown.

  • Создайте новый объект XmlDataDocument и загрузите его из XML-документа, а затем получите доступ к реляционному представлению данных с помощью свойства DataSet объекта XmlDataDocument.Create a new XmlDataDocument and load it from an XML document, and then access the relational view of the data using the DataSet property of the XmlDataDocument. Необходимо задать схему набора данных , прежде чем можно будет просматривать любые данные в объекте XmlDataDocument с помощью набора данных.You need to set the schema of the DataSet before you can view any of the data in the XmlDataDocument using the DataSet. Имена таблиц и столбцов в схеме набора данных опять же должны совпадать с именами XML-элементов, с которыми они должны быть синхронизированы.Again, the table names and column names in your DataSet schema must match the names of the XML elements that you want them synchronized with. Это соответствие с учетом регистра.This matching is case-sensitive.

    В следующем примере кода показано, как получить доступ к реляционному представлению данных в объекте XmlDataDocument.The following code example shows how to access the relational view of the data in an 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-документа.Another advantage of synchronizing an XmlDataDocument with a DataSet is that the fidelity of an XML document is preserved. Если набор данных заполняется из XML-документа с помощью метода ReadXml, то при записи данных обратно в виде XML-документа с помощью метода WriteXml он может значительно отличаться от исходного XML-документа.If the DataSet is populated from an XML document using ReadXml, when the data is written back as an XML document using WriteXml it may differ dramatically from the original XML document. Это обусловлено тем, что набор данных не поддерживает форматирование, например, пробелы или иерархические данные, например порядок элементов, из XML-документа.This is because the DataSet does not maintain formatting, such as white space, or hierarchical information, such as element order, from the XML document. Набор данных также не содержит элементов из XML-документа, которые были пропущены, так как они не соответствуют схеме набора данных.The DataSet also does not contain elements from the XML document that were ignored because they did not match the schema of the Dataset. Синхронизация объекта XmlDataDocument с набором данных позволяет поддерживать форматирование и иерархическую структуру элементов исходного XML-документа в объекте XmlDataDocument, в то время как набор данных содержит только данные и сведения о схеме, соответствующие набору данных.Synchronizing an XmlDataDocument with a DataSet allows the formatting and hierarchical element structure of the original XML document to be maintained in the XmlDataDocument, while the DataSet contains only data and schema information appropriate to the DataSet.

При синхронизации набора данных с XmlDataDocumentрезультаты могут различаться в зависимости от того, являются ли DataRelation объекты вложенными.When synchronizing a DataSet with an XmlDataDocument, results may differ depending on whether or not your DataRelation objects are nested. Дополнительные сведения см. в разделе вложенность связейданных.For more information, see Nesting DataRelations.

В этом разделеIn This Section

Синхронизация DataSet с XmlDataDocumentSynchronizing a DataSet with an XmlDataDocument
Демонстрирует синхронизацию строго типизированного набора данныхс минимальной схемой с помощью XmlDataDocument.Demonstrates synchronizing a strongly typed DataSet, with minimal schema, with an XmlDataDocument.

Выполнение запроса XPath к DataSetPerforming an XPath Query on a DataSet
Демонстрирует выполнение запроса XPath к содержимому набора данных.Demonstrates performing an XPath query on the contents of a DataSet.

Применение преобразования XSLT к DataSetApplying an XSLT Transform to a DataSet
Демонстрирует применение преобразования XSLT к содержимому набора данных.Demonstrates applying an XSLT transform to the contents of a DataSet.

Использование XML в наборах данныхUsing XML in a DataSet
Описывает взаимодействие набора данных с XML в качестве источника данных, включая загрузку и сохранение содержимого набора данных в виде XML-данных.Describes how the DataSet interacts with XML as a data source, including loading and persisting the contents of a DataSet as XML data.

Вложенность объектов DataRelationNesting DataRelations
Описывает важность вложенных объектов DataRelation , когда представляет содержимое набора данных в виде XML-данных, и описывает создание этих связей.Discusses the importance of nested DataRelation objects when representing the contents of a DataSet as XML data, and describes how to create these relations.

Наборы данных, таблицы данных и объекты DataViewDataSets, DataTables, and DataViews
Описывает набор данных и способ его использования для управления данными приложения и взаимодействия с источниками данных, включая реляционные базы данных и XML.Describes the DataSet and how to use it to manage application data and to interact with data sources including relational databases and XML.

XmlDataDocument
Содержит справочные сведения о классе XmlDataDocument .Contains reference information about the XmlDataDocument class.

См. такжеSee also