Como ler dados XML a partir de uma sequência no .NET Framework SDK

Traduções de Artigos Traduções de Artigos
Artigo: 301228 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo demonstra como utilizar a classe XmlTextReader ler XML (Extensible Markup Language) a partir de uma transmissão em sequência. A sequência pode ser provenientes uma variedade de origens, tais como uma sequência de bytes a partir de um servidor, um ficheiro ou uma classe de TextReader .

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs, terá de:
  • 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:
  • Terminologia XML
  • Criar e ler XML

Como ler dados XML a partir de uma transmissão em sequência

  1. Abra o Visual Studio. NET.
  2. Crie um novo Microsoft Visual Basic (VB) ou Microsoft Visual C# consola de aplicações.

    Nota : os passos seguintes fornecem uma descrição detalhada de como criar a aplicação. Também pode ir directamente para o passo 10, onde o código concluído é fornecido.
  3. Certifique-se de que o projecto contém uma referência para o espaço de nomes System.XML e System.IO .
  4. Utilize a instrução IMPORTA no espaço de nomes XML para que não é necessário para qualificar declarações XmlTextReader esse espaço de nomes mais tarde no código. Tem de utilizar a instrução IMPORTA anteriores para quaisquer outras declarações da seguinte forma:
    código de Visual Basic .NET
    Imports System.Xml
    Imports System.IO
    						
    Visual C# code
    using System.Xml;
    using System.IO;
    						
  5. Criar ou obter a sequência XML. Uma transmissão em sequência é uma representação abstracta de um entrada ou dispositivo de saída de origem ou destino de dados (neste caso, dados XML). Pode escrever e ler a partir de uma sequência que é melhor visualized como um fluxo de bytes.

    Sequências são utilizadas para fornecer independência do dispositivo e por isso requer inalterado programa se, por exemplo, altera a origem de uma transmissão em sequência. Existem algumas formas diferentes de criar uma sequência para a classe XmlTextReader . Seleccione uma das amostras de código seguinte para adicionar o procedimento principal do módulo predefinido:
    • Exemplo de código que usa o objeto StringReader :

      O objecto StringReader lê caracteres de cadeias e recebe um valor de cadeia durante a construçã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>")
      						
      C# 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 objecto StreamReader é utilizado para ler os caracteres a partir de ficheiros. Lê no nome do ficheiro para ser lidos 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")
      						
      C# código
      System.IO.StreamReader stream = new System.IO.StreamReader ("books.xml");
      						
      Note que o ficheiro Books.XML é utilizado aqui. É possível criar o seu ficheiro Books.XML. Um exemplo de ficheiro Books.XML também é fornecido com o Visual Studio .NET e o .NET Framework SDK.

  6. Criar uma classe XmlTextReader com a sequência. Normalmente, XmlTextReader é utilizada se precisar de aceder o XML como dados não processados sem a sobrecarga de um Document Object Model (DOM); por conseguinte, XmlTextReader fornece um mecanismo mais rápido para ler XML. XmlTextReader tem construtores diferentes para especificar a localização de XML dados. O seguinte código carrega XmlTextReader a partir de uma transmissão em sequência:
    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 carregado, XmlTextReader executa leituras sequenciais para mover entre os dados XML e utiliza o método de Ler para obter o próximo registo. Devolve FALSO se existirem registos não mais.
    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. Verifique se os nós. Para processar os dados XML, cada registo tem um tipo de nó, que pode ser determinado da propriedade tipo de nó . As propriedades de Nome e valor devolvem o nome de nó (os elementos e atributos nomes) e o valor de nó (o texto de nó) do nó actual (ou registo). A enumeração de tipo de nó determina o tipo de nó. O exemplo seguinte apresenta o nome de elementos e o tipo de documento. Tenha em atenção que este exemplo ignora os 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. Verifique se os atributos. Tipos de nó de elemento podem incluir uma lista de nós de atributo associados com eles. O método MovetoNextAttribute move-se sequencialmente através de cada atributo no elemento. Utilize a propriedade HasAttributes para testar se o nó tem os atributos. A propriedade AttributeCount devolve o número de atributos para o nó actual.
    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 concluído é fornecido aqui, para conveniência da utilizador.
    Código Basic.Net Visual
    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 do C#
    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. Criar e executar o projecto.

Referências

Para mais informações, consulte o "XML no Microsoft .NET: .NET Framework XML classes e simples de oferta de C#, dimensionável manipulação de dados" artigo a partir Da MSDN Magazine no seguinte Web site da Microsoft:
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx
Para mais informações sobre o XmlReader StreamReader e StringReader classes, consulte o Microsoft .NET Framework Class Library documentação.

Para mais informações sobre como utilizar XmlReader para ler dados XML, consulte o Microsoft .NET Framework para programadores do Guia de documentação.

Propriedades

Artigo: 301228 - Última revisão: 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 classe 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 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: 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