C# Ler e analisar um arquivo XML

Minahil Noor 11 dezembro 2023
C# Ler e analisar um arquivo XML

Em C#, o namespace System.Xml é utilizado para lidar com os arquivos XML. Tem diferentes classes e métodos para processar os arquivos XML. Podemos ler, analisar e escrever um arquivo XML utilizando este namespace.

Neste artigo, vamos discutir diferentes métodos que são utilizados para ler e analisar um arquivo XML.

Programa C# para ler e analisar um arquivo XML utilizando a classe XmlReader

A classe XmlReader em C# fornece uma maneira eficiente de acessar os dados em XML. O método XmlReader.Read() lê o primeiro nó do arquivo XML e depois lê o arquivo inteiro utilizando um loop while.

A sintaxe correta para utilizar este método é a seguinte:

XmlReader VariableName = XmlReader.Create(@"filepath");

while (reader.Read()) {
  // Action to perform repeatidly
}

O arquivo XML que lemos e analisamos em nosso programa é o seguinte. Copie e cole este código em um novo arquivo de texto e salve-o como .xml para utilizar este arquivo para executar o programa fornecido abaixo.

<?xml version="1.0" encoding="utf-8"?>  
<Students>  
 <Student>  
  </Student> 
 <Student>  
    <Name>Olivia</Name>  
    <Grade>A</Grade>  
  </Student>  
  <Student>  
    <Name>Laura</Name>  
    <Grade>A+</Grade>  
  </Student>  
  <Student>  
    <Name>Ben</Name>  
    <Grade>A-</Grade>  
  </Student>  
  <Student>  
    <Name>Henry</Name>  
    <Grade>B</Grade>  
  </Student>  
  <Student>  
    <Name>Monica</Name>  
    <Grade>B</Grade>  
  </Student>  
</Students> 

Exemplo de código:

using System;
using System.Xml;

namespace XMLReadAndParse {
  class XMLReadandParse {
    static void Main(string[] args) {
      // Start with XmlReader object
      // here, we try to setup Stream between the XML file nad xmlReader
      using (XmlReader reader = XmlReader.Create(@"d:\Example.xml")) {
        while (reader.Read()) {
          if (reader.IsStartElement()) {
            // return only when you have START tag
            switch (reader.Name.ToString()) {
              case "Name":
                Console.WriteLine("The Name of the Student is " + reader.ReadString());
                break;
              case "Grade":
                Console.WriteLine("The Grade of the Student is " + reader.ReadString());
                break;
            }
          }
          Console.WriteLine("");
        }
      }
      Console.ReadKey();
    }
  }
}

Aqui criamos um objeto de XmlReader e depois criamos um fluxo de leitura do arquivo XML dado utilizando o método Create().

Então, utilizamos o método XmlReader.Read() para ler o arquivo XML. Este método retorna um valor bool que indica se nosso fluxo criado contém ou não as instruções XML.

Depois disso, verificamos se há algum elemento inicial utilizando o método XmlReader.IsStartElement(). Como temos dois campos de elementos em nossos dados XML, utilizamos a instrução switch para ler os dados de ambos os campos utilizando o método ReadString().

Resultado:

The Name of the Student is Olivia

        The Grade of the Student is A

            The Name of the Student is Laura

                The Grade of the Student is A +

    The Name of the Student is Ben

        The Grade of the Student is A -

    The Name of the Student is Henry

        The Grade of the Student is B

            The Name of the Student is Monica

                The Grade of the Student is B