C# Legge e analizza un file XML

Minahil Noor 16 febbraio 2024
C# Legge e analizza un file XML

In C#, lo spazio dei nomi System.Xml viene utilizzato per gestire i file XML. Ha diverse classi e metodi per elaborare i file XML. Possiamo leggere, analizzare e scrivere un file XML utilizzando questo spazio dei nomi.

In questo articolo, discuteremo i diversi metodi usati per leggere e analizzare un file XML.

Programma C# per leggere e analizzare un file XML utilizzando la classe XmlReader

La classe XmlReader in C# fornisce un modo efficiente per accedere ai dati XML. Il metodo XmlReader.Read() legge il primo nodo del file XML e poi legge l’intero file usando un cicli while.

La sintassi corretta per utilizzare questo metodo è la seguente:

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

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

Il file XML che abbiamo letto e analizzato nel nostro programma è il seguente. Copia e incolla questo codice in un nuovo file di testo e salvalo come .xml per utilizzare questo file per eseguire il programma indicato di seguito.

<?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> 

Codice di esempio:

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();
    }
  }
}

Qui abbiamo creato un oggetto di XmlReader e quindi abbiamo creato un flusso di lettura del file XML dato usando il metodo Create().

Quindi, abbiamo utilizzato il metodo XmlReader.Read() per leggere il file XML. Questo metodo restituisce un valore bool che indica se il nostro flusso creato contiene le istruzioni XML o meno.

Dopodiché, abbiamo verificato se esiste un elemento di partenza utilizzando il metodo XmlReader.IsStartElement(). Poiché abbiamo due campi elemento nei nostri dati XML, abbiamo utilizzato l’istruzione switch per leggere i dati da entrambi i campi utilizzando il metodo ReadString().

Produzione:

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