Como ler XML de um arquivo usando o Visual C#

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.

307548
Para obter uma versão deste artigo do Microsoft Visual Basic .NET, consulte 301225.

Este artigo refere-se ao seguinte namespace Microsoft.NET Framework Class Library:
  • System. XML
Sumário
Este artigo descreve como usar a classe XmlTextReader para ler um arquivo Extensible Markup Language (XML). XmlTextReader fornece análise direta e tokenizing de XML e a especificação XML 1.0 implementa, bem como os espaços para nome na especificação de XML a partir da World Wide Web Consortium (W3C). Este artigo fornece acesso por fluxo rápido, indexada para XML em vez de usar um modelo de objeto, como o XML DOM Document Object Model ().

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Visual Studio 2005 ou Microsoft Visual Studio .NET
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Terminologia XML
  • Criar e ler um arquivo XML

Como ler XML de um arquivo

Este exemplo usa um arquivo chamado Books. XML. Você pode criar seu próprio arquivo Books. XML ou usar o arquivo de exemplo que acompanha o QuickStarts .NET Software Development Kit (SDK) na seguinte pasta:
\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Você deve copiar Books. XML para a pasta \Bin\Debug, que está localizada na pasta em que você cria neste projeto. Books. XML também está disponível para download. Consulte o "Referências"seção para o local de download.
  1. Inicie o Visual Studio 2005 ou Visual Studio .NET.
  2. Crie um novo Visual C# aplicativo de Console. Você vá diretamente para o "Lista completa de código"seção ou continuar estas etapas para criar o aplicativo.
  3. Certifique-se de que o projeto contém uma referência ao assembly System.Xml.dll .
  4. Especifica a diretiva usando o espaço para nome System. XML para que você não precisa qualificar XmlTextReader declarações posteriormente no seu código. Você deve usar a diretiva usando antes de quaisquer outras declarações.
    using System.Xml;					
  5. Criar uma instância de um objeto XmlTextReader e preenchê-lo com o arquivo XML. Normalmente, a classe XmlTextReader é usada se você precisar acessar o XML como dados não processados sem a sobrecarga de um DOM; Assim, a classe XmlTextReader fornece um mecanismo mais rápido para leitura de XML. A classe XmlTextReader tem construtores diferentes para especificar a localização dos dados XML. O código a seguir cria uma instância da classe XmlTextReader e carrega o arquivo Books. XML. Adicione o seguinte código ao procedimento principal de Class1.
    XmlTextReader reader = new XmlTextReader ("books.xml");					
  6. Ler o XML. (Observe que esta etapa demonstra um "loop while" externo e as próximas duas etapas demonstram como usar o loop para ler o XML.) Depois de criar o objeto XmlTextReader , use o método Read para ler os dados XML. O método Read continua a percorrer o arquivo XML em seqüência até que ele atinge o final do arquivo, no qual apontar o retorno de método ler um valor "False".
    while (reader.Read()) {    // Do some work here on the data.	Console.WriteLine(reader.Name);}Console.ReadLine();					
  7. Inspecione os nós. Para processar os dados XML, cada registro tem um tipo de nó que pode ser determinado da propriedade NodeType . As propriedades de nome e valor retornam o nome do nó (os nomes de elemento e atributo) e o valor do nó (o texto de nó) do nó atual (ou registro). A enumeração NodeType determina o tipo de nó. O exemplo de código a seguir exibe o nome dos elementos e o tipo de documento. Observe que esse exemplo ignora atributos do elemento.
    while (reader.Read()) {    switch (reader.NodeType)     {        case XmlNodeType.Element: // The node is an element.            Console.Write("<" + reader.Name);   Console.WriteLine(">");            break;  case XmlNodeType.Text: //Display the text in each element.            Console.WriteLine (reader.Value);            break;  case XmlNodeType. EndElement: //Display the end of the element.            Console.Write("</" + reader.Name);   Console.WriteLine(">");            break;    }}					
  8. Inspecione os atributos. Tipos de nó de elemento podem incluir uma lista de nós de atributo que estão associados eles. O método MovetoNextAttribute seqüencialmente move através de cada atributo no elemento. Use a propriedade HasAttributes para testar se o nó tem os atributos. A propriedade AttributeCount retorna o número de atributos para o nó atual.
    while (reader.Read()) {       switch (reader.NodeType)        {           case XmlNodeType.Element: // The node is an element.               Console.Write("<" + reader.Name);               while (reader.MoveToNextAttribute()) // Read the attributes.                   Console.Write(" " + reader.Name + "='" + reader.Value + "'");      Console.WriteLine(">");               break;     case XmlNodeType.Text: //Display the text in each element.               Console.WriteLine (reader.Value);               break;     case XmlNodeType. EndElement: //Display the end of the element.               Console.Write("</" + reader.Name);      Console.WriteLine(">");               break;       }   }					
  9. Salve e feche o projeto.

Lista completa de código

using System;using System.Xml;namespace ReadXMLfromFile{    /// <summary>    /// Summary description for Class1.    /// </summary>    class Class1    {        static void Main(string[] args)        {            XmlTextReader reader = new XmlTextReader ("books.xml");            while (reader.Read())             {                switch (reader.NodeType)                 {                    case XmlNodeType.Element: // The node is an element.                        Console.Write("<" + reader.Name);                        Console.WriteLine(">");                        break;                    case XmlNodeType.Text: //Display the text in each element.                        Console.WriteLine (reader.Value);                        break;                    case XmlNodeType.EndElement: //Display the end of the element.                        Console.Write("</" + reader.Name);                        Console.WriteLine(">");                        break;                }            }            Console.ReadLine();        }    }}				

Exemplo de saída

<bookstore><book><title>The Autobiography of Benjamin Franklin</title><author><first-name>Benjamin</first-name><last-name>Franklin</last-name></author><price>8.99</price></book><book><title>The Confidence Man</title><author><first-name>Herman</first-name><last-name>Melville</last-name></author><price>11.99</price></book><book><title>The Gorgias</title><author><name>Plato</name></author><price>9.99</price></book></bookstore>				

Solução de problemas

Quando você testa o código, você pode receber a seguinte mensagem de erro de exceção: exceção não tratada: System.Xml.XmlException: declaração XML inesperada. A declaração XML deve ser o primeiro nó no documento e nenhum caractere de espaço em branco é permitida antes dela.

Informações adicionais: erro de sistema. O erro de exceção ocorre na linha de código a seguir: enquanto
(reader.Read())
O erro de exceção é causado por uma instrução de processamento inválido. Por exemplo, a instrução de processamento pode conter espaços estranhos. Este é um exemplo de uma instrução de processamento inválido:
<?xml version='1.0' ?>
Esta marca xml tem um espaço anterior a '<’ bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the="" error.=""></’>

REFERÊNCIAS

O seguinte arquivo está disponível para download no Microsoft Download Center:
Para obter mais informações sobre classes.NET Framework XML e C#, visite o seguinte site da Microsoft Developer Network (MSDN):Para obter mais informações sobre a classe XmlReader , visite o seguinte site da MSDN:Para obter mais informações sobre como usar XmlReader para ler dados XML, visite os seguintes sites da MSDN:

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 307548 - Última Revisão: 11/15/2012 02:48:00 - Revisão: 1.0

  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • kbdownload kbhowtomaster kbmt KB307548 KbMtpt
Esta informação foi útil?