C# Lesen und Parsen einer XML-Datei

Minahil Noor 16 Februar 2024
C# Lesen und Parsen einer XML-Datei

In C# wird der Namensraum System.Xml verwendet, um mit den XML-Dateien umzugehen. Er verfügt über verschiedene Klassen und Methoden, um XML-Dateien zu verarbeiten. Wir können eine XML-Datei lesen, parsen und schreiben, indem wir diesen Namensraum benutzen.

In diesem Artikel werden wir verschiedene Methoden besprechen, die zum Lesen und Parsen einer XML-Datei verwendet werden.

C# Programm zum Lesen und Parsen einer XML-Datei mit der Klasse XmlReader

Die Klasse XmlReader in C# bietet eine effiziente Möglichkeit, auf XML-Daten zuzugreifen. Die Methode XmlReader.Read() liest den ersten Knoten der XML-Datei und liest dann die gesamte Datei unter Verwendung einer while-Schleife.

Die korrekte Syntax zur Verwendung dieser Methode lautet wie folgt:

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

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

Die XML-Datei, die wir in unserem Programm gelesen und geparst haben, lautet wie folgt. Kopieren Sie diesen Code und fügen Sie ihn in eine neue Textdatei ein und speichern Sie sie als .xml, um diese Datei zur Ausführung des unten angegebenen Programms zu verwenden.

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

Beispiel-Code:

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

Hier haben wir ein Objekt von XmlReader erzeugt und dann mit der Methode Create() einen Lesestream der gegebenen XML Datei erzeugt.

Dann haben wir die Methode XmlReader.Read() benutzt, um die XML Datei zu lesen. Diese Methode gibt einen bool-Wert zurück, der angibt, ob der von uns erzeugte Stream die XML-Anweisungen enthält oder nicht.

Danach haben wir mit der XmlReader.IsStartElement() Methode überprüft, ob es irgendein Startelement gibt. Da wir zwei Elementfelder in unseren XML-Daten haben, haben wir die Switch-Anweisung verwendet, um die Daten aus beiden Feldern mit der ReadString()-Methode zu lesen.

Ausgabe:

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