Compartilhar via


Sincronização de DataSet e XmlDataDocument

O ADO.NET DataSet fornece uma representação relacional de dados. Para acesso a dados hierárquicos, você pode usar as classes XML disponíveis no .NET Framework. Historicamente, essas duas representações de dados foram usadas separadamente. No entanto, o .NET Framework permite acesso síncrono em tempo real às representações relacionais e hierárquicas de dados por meio do DataSet objeto e do XmlDataDocument objeto, respectivamente.

Quando um DataSet é sincronizado com um XmlDataDocument, ambos os objetos estão trabalhando com um único conjunto de dados. Isso significa que, se uma alteração for feita no DataSet, a alteração será refletida no XmlDataDocument e vice-versa. A relação entre o DataSet e o XmlDataDocument cria uma grande flexibilidade ao permitir que um único aplicativo, usando um único conjunto de dados, acesse todo o conjunto de serviços criados em torno do DataSet, como os controles de Web Forms e Windows Forms e os designers do Visual Studio .NET, bem como o conjunto de serviços XML, incluindo XSL (Extensible Stylesheet Language), XSLT (Transformações XSL) e XPath (Linguagem de Caminho XML). Você não precisa escolher qual conjunto de serviços deve ser direcionado com o aplicativo; ambos estão disponíveis.

Há várias maneiras de sincronizar um DataSet com um XmlDataDocument. É possível:

  • Preencha um DataSet com esquema (ou seja, uma estrutura relacional) e dados e sincronize-o com um novo XmlDataDocument. Isso fornece uma exibição hierárquica dos dados relacionais existentes. Por exemplo:

    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);
    
  • Preencha um DataSet com apenas esquema (como um DataSet fortemente tipado), sincronize-o com um XmlDataDocument e carregue-o XmlDataDocument de um documento XML. Isso fornece uma exibição relacional de dados hierárquicos existentes. Os nomes de tabela e os nomes de coluna no esquema DataSet devem corresponder aos nomes dos elementos XML com os quais você deseja que eles sejam sincronizados. Essa correspondência diferencia maiúsculas de minúsculas.

    Observe que o esquema do DataSet precisa apenas corresponder aos elementos XML que você deseja expor na sua visualização relacional. Dessa forma, você pode ter um documento XML muito grande e uma "janela" relacional muito pequena nesse documento. O XmlDataDocument preserva todo o documento XML, embora o DataSet apenas exponha uma pequena parte dele. (Para obter um exemplo detalhado disso, consulte Synchronizing a DataSet with an XmlDataDocument.)

    O exemplo de código a seguir mostra as etapas para criar e DataSet popular seu esquema, e, em seguida, sincronizá-lo com o XmlDataDocument. Observe que o DataSet esquema só precisa corresponder aos elementos dos XmlDataDocument quais você deseja expor usando o 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");
    

    Não é possível carregar um XmlDataDocument se ele for sincronizado com um DataSet que contenha dados. Uma exceção será gerada.

  • Crie um novo XmlDataDocument e carregue-o de um documento XML e acesse a exibição relacional dos dados usando a DataSet propriedade do XmlDataDocument. Você precisa definir o esquema do DataSet antes de poder exibir qualquer um dos dados no XmlDataDocument usando o Conjunto de Dados. Novamente, os nomes de tabela e os nomes de coluna em seu DataSet esquema devem corresponder aos nomes dos elementos XML com os quais você deseja que eles sejam sincronizados. Essa correspondência diferencia maiúsculas de minúsculas.

    O exemplo de código a seguir mostra como acessar a exibição relacional dos dados em um 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");
    

Outra vantagem de sincronizar um XmlDataDocument com DataSet um é que a fidelidade de um documento XML é preservada. Se o DataSet for preenchido a partir de um documento XML usando ReadXml, quando os dados forem gravados de volta como documento XML usando WriteXml, eles poderão diferir drasticamente do documento XML original. Isso ocorre porque o DataSet não mantém a formatação, como espaço em branco, ou informações hierárquicas, como a ordem dos elementos a partir do documento XML. O DataSet também não contém elementos do documento XML que foram ignorados porque não corresponderam ao esquema do conjunto de dados. Sincronizar um XmlDataDocument com um DataSet permite que a formatação e a estrutura de elementos hierárquicos do documento XML original sejam mantidas no XmlDataDocument, enquanto que contém DataSet apenas dados e informações de esquema apropriadas para o DataSet.

Ao sincronizar um DataSet com um XmlDataDocument, os resultados podem variar dependendo de os objetos DataRelation estarem aninhados ou não. Para obter mais informações, consulte Nesting DataRelations.

Nesta seção

Sincronizando um DataSet com um XmlDataDocument Demonstra a sincronização de um DataSet fortemente tipado, com esquema mínimo, com um XmlDataDocument.

Executando uma consulta XPath em um Conjunto de Dados Demonstra a execução de uma consulta XPath no conteúdo de um DataSet.

Aplicando uma transformação XSLT a um Conjunto de Dados Demonstra a aplicação de uma transformação XSLT ao conteúdo de um DataSet.

Usando XML em um Conjunto de Dados Descreve como o DataSet XML interage como uma fonte de dados, incluindo o carregamento e a persistência do conteúdo de um DataSet como dados XML.

Aninhando DataRelations Discute a importância dos objetos aninhados DataRelation ao representar o conteúdo de um DataSet como dados XML e descreve como criar essas relações.

DataSets, DataTables e DataViews Descreve o DataSet e como usá-los para gerenciar dados do aplicativo e interagir com fontes de dados, incluindo bancos de dados relacionais e XML.

XmlDataDocument Contém informações de referência sobre a XmlDataDocument classe.

Consulte também