Como ler dados XML a partir de um fluxo no .NET Framework SDK

Traduções deste artigo Traduções deste artigo
ID do artigo: 301228 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo demonstra como usar a classe XmlTextReader para ler o XML (Extensible Markup Language) de um fluxo. O fluxo pode vir de uma variedade de fontes, como um fluxo de bytes de um servidor, um arquivo ou uma classe TextReader .

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que será necessário:
  • 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 você esteja familiarizado com os seguintes tópicos:
  • Terminologia XML
  • Criar e ler XML

Como ler dados XML de um fluxo

  1. Abra o Visual Studio .NET.
  2. Crie um novo Microsoft Visual Basic (VB) ou Microsoft Visual translation from VPE for Csharp Console Application.

    Observação : as etapas a seguir fornecem uma descrição detalhada de como criar o aplicativo. Você também pode ir diretamente para a etapa 10, onde o código completo é fornecido.
  3. Certifique-se que o projeto contém uma referência ao namespace System.IO e System.XML .
  4. Use a instrução IMPORTS no namespace XML para que não é necessário para qualificar declarações XmlTextReader no namespace posteriormente no seu código. Você deve usar a instrução IMPORTS antes para qualquer outra declaração da seguinte maneira:
    código do Visual Basic .NET
    Imports System.Xml
    Imports System.IO
    						
    Visual C# code
    using System.Xml;
    using System.IO;
    						
  5. Criar ou recuperar o fluxo de XML. Um fluxo é uma representação abstrata de um entrada ou dispositivo de saída que é a origem do destino de dados (nesse caso, dados XML). Você pode gravar e ler de um fluxo, que é melhor visualizado como um fluxo de bytes.

    Fluxos são usados para fornecer independência do dispositivo e, portanto, não exigir nenhuma alteração do programa se, por exemplo, altera a fonte de um fluxo. Há algumas maneiras de criar um fluxo para a classe XmlTextReader . Selecione um dos exemplos de código a seguir para adicionar o procedimento Main do módulo padrão:
    • Exemplo de código que usa o objeto StringReader :

      O objeto StringReader lê caracteres de seqüências de caracteres e obtém um valor de seqüência de caracteres durante a construção. o Código do Visual Basic .NET
      Dim stream as System.IO.StringReader
      stream = new StringReader("<?xml version='1.0'?>" & _
      "<!-- This file is a book store inventory. -->" & _
      "<bookstore>" & _
      " <book genre=""autobiography"" ISBN=""1-861003-11-0"">" & _
      "   <title>The Autobiography of Benjamin Franklin</title>" & _
      "   <author>" & _
      "       <first-name>Benjamin</first-name>" & _
      "       <last-name>Franklin</last-name>" & _
      "   </author>" & _
      "   <price>8.99</price>" & _
      " </book>" & _
      "</bookstore>")
      						
      translation from VPE for Csharp código
      StringReader stream;
      stream = new StringReader("<?xml version='1.0'?>" +
      	"<!-- This file represents a fragment of a book store inventory database. -->" +
      	"<bookstore>" +
      	" <book genre=\"autobiography\" publicationdate=\"1981\" ISBN=\"1-861003-11-0\">" +
      	"   <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 genre=\"novel\" publicationdate=\"1967\" ISBN=\"0-201-63361-2\">" +
      	"   <title>The Confidence Man</title>" +
      	"   <author>" +
      	"       <first-name>Herman</first-name>" +
      	"       <last-name>Melville</last-name>" +
      	"   </author>" +
      	"   <price>11.99</price>" +
      	" </book>" +
      	"  <book genre=\"philosophy\" publicationdate=\"1991\" ISBN=\"1-861001-57-6\">" +
      	"   <title>The Gorgias</title>" +
      	"   <author>" +
      	"       <name>Plato</name>" +
      	"   </author>" +
      	"   <price>9.99</price>" +
      	" </book>" +
      	"</bookstore>");
      						
    • Exemplo de código que usa o objeto StreamReader :

      O objeto StreamReader é usado para ler caracteres de arquivos. Ele lê no nome do arquivo seja lido durante a construção: Código do Visual Basic .NET
      Dim stream as System.IO.StreamReader
      ' Loads the XML data in the file books.xml in a new stream.
      stream = New StreamReader ("books.xml")
      						
      translation from VPE for Csharp código
      System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");
      						
      Observe que o arquivo Books.XML é usado aqui. Você pode criar seu próprio arquivo Books.XML. Um arquivo de Books.XML exemplo também é fornecido com o Visual Studio .NET e .NET Framework SDK.

  6. Construa uma classe XmlTextReader com o fluxo. Normalmente, XmlTextReader é usado se você precisar acessar o XML como dados não processados sem a sobrecarga de um DOM (Document Object Model); portanto, XmlTextReader fornece um mecanismo mais rápido para ler o XML. XmlTextReader tem construtores diferentes para especificar o local do XML dados. O código a seguir carrega XmlTextReader partir de um fluxo:
    código do Visual Basic .NET
    Dim reader As XmlTextReader = New XmlTextReader (stream)
    						
    C# Code
    XmlTextReader reader = null;	
    reader = new XmlTextReader (stream);
    						
  7. Leia o XML. Depois de carregar, XmlTextReader executa leituras seqüenciais para mover entre os dados XML e usa o método Read para obter o próximo registro. Ele retorna FALSO se há não mais registros.
    código do Visual Basic .NET
    Do While (reader.Read())
        ' Do some work here on the data.
        Console.WriteLine(reader.Name)
    Loop
    
    ' Reading of the XML file has finished.
    Console.ReadLine() 'Pause
    						
    C# Code
    while (reader.Read()) 
    {
        // Do some work here on the data.
        ...
    }
    
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    						
  8. 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 retornarão o nome do nó (os nomes de elemento e atributo) e o valor do nó (o texto de nó) do atual nó (ou registro). A enumeração NodeType determina o tipo de nó. O exemplo a seguir exibe o nome dos elementos e o tipo de documento. Observe que esse exemplo ignora atributos do elemento.
    código do Visual Basic .NET
    Do While (reader.Read())
    Select Case reader.NodeType
    Case XmlNodeType.Element 'Display beginning of element.
    Console.Write("<" + reader.Name)
    Console.WriteLine(">")
    Case XmlNodeType.Text 'Display the text in each element.
    Console.WriteLine(reader.Value)
    Case XmlNodeType.EndElement 'Display end of element.
    Console.Write("</" + reader.Name)
    Console.WriteLine(">")
    End Select
    Loop
    						
    C# Code
    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 end of element.
                Console.Write("</" + reader.Name);
       Console.WriteLine(">");
                break;
        }
    }
    						
  9. 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.
    código do Visual Basic .NET
    Do While (reader.Read())
    Select Case reader.NodeType
    Case XmlNodeType.Element 'Display beginning of element.
    Console.Write("<" + reader.Name)
             If reader.HasAttributes Then 'If attributes exist
             	While reader.MoveToNextAttribute() 
    					'Display attribute name and value.
    Console.Write(" {0}='{1}'", reader.Name, reader.Value)
    End While
    End If
    Console.WriteLine(">")
    Case XmlNodeType.Text 'Display the text in each element.
    Console.WriteLine(reader.Value)
    Case XmlNodeType.EndElement 'Display end of element.
    Console.Write("</" + reader.Name)
    Console.WriteLine(">")
    End Select
    Loop
    						
    C# Code
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an Element.
                Console.Write("<" + reader.Name);
    
                while (reader.MoveToNextAttribute()) // Read attributes.
                    Console.Write(" " + reader.Name + "='" + reader.Value + "'");
                Console.Write(">");
       Console.WriteLine(">");
                break;
      case XmlNodeType.Text: //Display the text in each element.
                Console.WriteLine (reader.Value);
                break;
      case XmlNodeType. EndElement: //Display end of element.
                Console.Write("</" + reader.Name);
       Console.WriteLine(">");
                break;
        }
    }
    						

  10. Código completo é fornecido aqui para sua conveniência.
    O Visual Basic.NET código
    Imports System.Xml
    Imports System.IO
    Module Module1
    
        Sub Main()
            Dim stream As System.IO.StreamReader
            ' Loads the XML data in the file books.xml in a new stream.
            stream = New StreamReader("books.xml")
            Dim reader As XmlTextReader = New XmlTextReader(stream)
            Do While (reader.Read())
                Select Case reader.NodeType
                    Case XmlNodeType.Element 'Display beginning of element.
                        Console.Write("<" + reader.Name)
                        If reader.HasAttributes Then 'If attributes exist
                            While reader.MoveToNextAttribute()
                                'Display attribute name and value.
                                Console.Write(" {0}='{1}'", reader.Name, reader.Value)
                            End While
                        End If
                        Console.WriteLine(">")
                    Case XmlNodeType.Text 'Display the text in each element.
                        Console.WriteLine(reader.Value)
                    Case XmlNodeType.EndElement 'Display end of element.
                        Console.Write("</" + reader.Name)
                        Console.WriteLine(">")
                End Select
            Loop
        End Sub
    
    End Module
    						

    Código translation from VPE for Csharp
    using System;
    using System.Xml;
    using System.IO;
    namespace ReadXMLFromStream
    {
    	/// <summary>
    	/// Summary description for Class1.
    	/// </summary>
    	class Class1
    	{
    		static void Main(string[] args)
    		{
    
    			System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");
    			XmlTextReader reader = null;	
    			reader = new XmlTextReader (stream);
    			while (reader.Read()) 
    			{
    				switch (reader.NodeType) 
    				{
    					case XmlNodeType.Element: // The node is an Element.
    						Console.Write("<" + reader.Name);
    
    						while (reader.MoveToNextAttribute()) // Read attributes.
    							Console.Write(" " + reader.Name + "='" + reader.Value + "'");
    						Console.Write(">");
    						Console.WriteLine(">");
    						break;
    					case XmlNodeType.Text: //Display the text in each element.
    						Console.WriteLine (reader.Value);
    						break;
    					case XmlNodeType. EndElement: //Display end of element.
    						Console.Write("</" + reader.Name);
    						Console.WriteLine(">");
    						break;
    				}
    			}
    
    		}
    	}
    }
    
    						
  11. Compilar e executar o projeto.

Referências

Para obter mais informações, consulte o "XML no Microsoft. NET: .NET classes XML do Framework e translation from VPE for Csharp oferta simples, manipulação de dados escalonáveis" artigo da MSDN Magazine no seguinte site da Microsoft:
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx
Para obter mais informações sobre XmlReader , StreamReader e StringReader classes, consulte a biblioteca Microsoft .NET Framework Class documentação.

Para obter mais informações sobre como usar XmlReader para ler dados XML, consulte do Microsoft .NET Framework Developer guia documentação.

Propriedades

ID do artigo: 301228 - Última revisão: quinta-feira, 15 de julho de 2004 - Revisão: 3.4
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.1
  • Bibliotecas de Classes do Microsoft .NET Framework 1.1
Palavras-chave: 
kbmt kbhowtomaster KB301228 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: 301228

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