Como ler XML de um arquivo usando o Visual C#

Traduções deste artigo Traduções deste artigo
ID do artigo: 307548 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi publicado anteriormente em BR307548
Expandir tudo | Recolher tudo

Neste artigo

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:
Recolher esta imagemExpandir esta imagem
Fazer o download
Baixe o pacote Books.exe agora.
Para obter mais informações sobre classes.NET Framework XML e C#, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-US/Magazine/cc302158.aspx
Para obter mais informações sobre a classe XmlReader , visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/System.XML.XmlReader (vs.71). aspx
Para obter mais informações sobre como usar XmlReader para ler dados XML, visite os seguintes sites da MSDN:
http://msdn2.microsoft.com/en-us/library/aa720470 (VS.71). aspx

http://msdn2.microsoft.com/en-us/library/tfz3cz6w (vs.71). aspx

Propriedades

ID do artigo: 307548 - Última revisão: quinta-feira, 15 de novembro de 2012 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Palavras-chave: 
kbdownload kbhowtomaster kbmt KB307548 KbMtpt
Traduçã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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 307548

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com