Artigo: 311566 - Última revisão: domingo, 13 de Maio de 2007 - Revisão: 2.4

Como ler dados XML para um DataSet utilizando o Visual C# .NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo demonstra como ler dados XML (Extensible Markup Language) num objecto ADO.NET DataSet .

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • Visual Studio .NET
  • Noções básicas do ADO.NET e sintaxe
  • Noções básicas XML

Descrição da técnica

Pode utilizar o método ReadXml para ler o esquema XML e dados para um DataSet . Dados XML podem ser lidas directamente de um ficheiro, um objecto de sequência , um objecto de XmlWriter ou um objecto de TextWriter .

Pode utilizar um dos dois conjuntos de métodos sobrecarregados para o método ReadXml , dependendo das suas necessidades. O primeiro conjunto de quatro métodos sobrecarregados demora apenas um parâmetro. O segundo conjunto de quatro métodos sobrecarregados têm um parâmetro adicional ( XmlReadMode ) juntamente com um dos parâmetros do primeiro conjunto.

A lista seguinte descreve o primeiro conjunto de métodos sobrecarregados, que têm um parâmetro:
  • O código a seguir utiliza um ficheiro especificado para ler dados e esquema XML para DataSet :
    Overloads Public Sub ReadXml(String)
    					
  • O código a seguir utiliza um TextReader especificado para ler o esquema XML e dados num DataSet . TextReader foi concebido para entrada de carácter.
    Overloads Public Sub ReadXml(TextReader)
    					
  • O código a seguir utiliza um especificado System.IO.Stream para ler o esquema XML e dados num DataSet . A classe de transmissão em sequência foi concebida para bytes de entrada e saída.
    Overloads Public Sub ReadXml(Stream)
    					
  • O código a seguir utiliza um especificado XmlReader para ler o esquema XML e dados num DataSet . Este método fornece rápido, fora de cache, reencaminhar - apenas acesso aos dados XML que está em conformidade com a World Wide Web Consortium (W3C) especificação XML 1.0 e os espaços de nomes na especificação de XML.
    Overloads Public Sub ReadXml(XmlReader)
    					
A lista a seguir descreve o segundo conjunto de métodos sobrecarregados, que demorar XmlReadMode com um dos parâmetros acima indicados. A enumeração XmlReadMode Especifica como ler dados XML e esquema para um DataSet .
  • DiffGram . Lê um DiffGram e aplica alterações a partir de DiffGram DataSet .
  • fragmento . Lê documentos XML que contenham fragmentos de esquema de (XML-data REDUCED) incorporada (como os que são gerados quando executa FOR XML schemas incluem esquema XDR inline contra uma instância do Microsoft SQL Server).
  • IgnoreSchema . Ignora qualquer esquema inline e lê dados para o esquema de DataSet existente.
  • InferSchema . Ignora qualquer esquema inline, infere esquema a partir dos dados e carrega os dados. Se o DataSet já contém um esquema, o InferSchema expande o esquema actual por adicionar colunas a tabelas que existem e adicionando novas tabelas se não existem tabelas.
  • ReadSchema . Lê qualquer esquema inline e carrega os dados.
  • automática . Por predefinição. Executa a acção mais adequada.

Criar projecto e adicionar código

Este exemplo utiliza um ficheiro denominado MySchema.xml. Para criar MySchema.xml, siga os passos no seguinte artigo da base de dados de conhecimento da Microsoft:
309183  (http://support.microsoft.com/kb/309183/EN-US/ ) Como Persist um DataSet ADO.NET como XML utilizando o Visual C# .NET
O código de exemplo seguinte demonstra como utilizar duas das versões utilizadas sobrecarregadas do ReadXml . Para obter outros exemplos, consulte a MSDN para tópicos individuais sobrecarga deste método.
  1. Inicie o Visual Studio NET..
  2. Crie um novo projecto de aplicação do Windows no Visual C# .NET. Form1 é adicionado ao projecto por predefinição.
  3. Certifique-se que o projecto contém uma referência ao espaço de nomes System.data e adicione uma referência a este espaço de nomes se não tiver.
  4. Coloque dois controlos do botão e um controlo DataGrid no Form1. Alterar a propriedade Name do Button1 para btnReader e alterar a propriedade de texto para o leitor .

    Alterar a propriedade Name do Button2 para btnFile e alterar a propriedade de texto para o ficheiro .
  5. Utilizar a instrução a utilizar espaços de nomes System.data.SqlClient , System.data e sistema para que não é necessário para qualificar declarações os espaços de nomes mais tarde no código.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  6. Adicione o seguinte código no processador de eventos que corresponde aos botões:
    private void btnReader_Click(object sender, System.EventArgs e)
    {
        string myXMLfile = @"C:\MySchema.xml";
        DataSet ds = new DataSet();
        // Create new FileStream with which to read the schema.
        System.IO.FileStream fsReadXml = new System.IO.FileStream 
            (myXMLfile, System.IO.FileMode.Open);
        try
        {
            ds.ReadXml(fsReadXml);
            dataGrid1.DataSource = ds;
            dataGrid1.DataMember = "Cust";
        }
        catch (Exception ex)
        {
    	MessageBox.Show(ex.ToString());
        }
        finally
        {
    	fsReadXml.Close();
        }
    }
    		
    private void btnFile_Click(object sender, System.EventArgs e)
    {
        string myXMLfile = "C:\\MySchema.xml";
        DataSet ds = new DataSet(); 
        try
        {
            ds.ReadXml(myXMLfile);
            dataGrid1.DataSource = ds;
            dataGrid1.DataMember = "Cust";
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
    					
  7. Modifique o caminho para o ficheiro XML ( MyXmlFile ) conforme apropriado para o ambiente.
  8. Guarde o projecto. No menu Debug , clique em Iniciar para executar o projecto.
  9. Clique dos botões para ler os dados XML do ficheiro especificado. Repare que os dados XML é apresentado na grelha.

Notas adicionais

  • Para obter apenas o esquema XML, pode utilizar o método ReadXmlSchema .
  • Para obter apenas a representação XML dos dados no DataSet em vez de permanecê-lo para uma transmissão em sequência ou um ficheiro, pode utilizar o método GetXml .

Referências

Para obter informações adicionais, clique nos números de artigo existentes abaixo para visualizar os artigos na Microsoft Knowledge Base:
309183  (http://support.microsoft.com/kb/309183/EN-US/ ) Como Persist um DataSet ADO.NET como XML utilizando o Visual C# .NET
262450  (http://support.microsoft.com/kb/262450/EN-US/ ) Como um exemplo de C++ de persistente de XML do conjunto de registos ADO
Para mais informações sobre objectos ADO.NET e sintaxe, consulte a seguinte documentação do Microsoft .NET Framework Software Development Kit (SDK) ou Web site MSDN online:
Acessando dados com o ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbhowtomaster kbsystemdata KB311566 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 311566  (http://support.microsoft.com/kb/311566/en-us/ )