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

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
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System.XML
  • System.IO

NESTA TAREFA

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 .

back to the top

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.XmlImports 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.StringReaderstream = 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.NodeTypeCase 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 SelectLoop						
    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.NodeTypeCase 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 WhileEnd IfConsole.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 SelectLoop						
    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.XmlImports System.IOModule 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 SubEnd 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.
back to the top
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: 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.

back to the top
dotnet xml

Propriedades

ID do Artigo: 301228 - Última Revisão: 12/06/2015 03:16:03 - Revisão: 3.4

Microsoft .NET Framework 1.1, Bibliotecas de Classes do Microsoft .NET Framework 1.1

  • kbnosurvey kbarchive kbmt kbhowtomaster KB301228 KbMtpt
Comentários