Hi. Ich habe Probleme bei lesen der untstehenden XML Datei. Zunächst möchte ich einfach alle Knoten ausgeben und später bestimmte Knoten direkt ansprechen. Kann mir jemand ein parrTipps geben.
<Klausur>
<Klausurdaten>
<ProfName>Max Muster</ProfName>
<KlausurName>C#</KlausurName>
</Klausurdaten>
<Noten>
<Student>
<Matrikelnummer>12345</Matrikelnummer>
<Prozentpunkte>90</Prozentpunkte>
</Student>
<Student>
<Matrikelnummer>54321</Matrikelnummer>
<Prozentpunkte>77</Prozentpunkte>
</Student>
</Noten>
</Klausur>
XmlDocument doc = new XmlDocument();
doc.Load("noten.xml");
XmlElement root = doc.DocumentElement;
foreach(XmlNode i in root.ChildNodes)
{
Console.WriteLine(i["ProfName"].InnerText);
Console.WriteLine(i["KlausurName"].InnerText);
//Console.WriteLine(i["Matriklenummer"].InnerText);
//funktioniert so nicht - und wie könnte man beispielsweise
//die Anzahl der Studenten ermitteln (durchzählen)
}
thanks!!
hallo Surrendert,
wenn du deinen Code ausführst bekommt du eine Exception? Das liegt daran, dass der erste Childknoten von "i" (also "Klausurdaten") die Subknoten "ProfName" und "KlausurName" enthält, der zweite (also "Noten") aber nicht.
Möchtest du einzelne oder mehrere Knoten aus einem XML-Dokument auslesen, bieten sich die Methoden "SelectSingleNode" (für einzelne) oder "SelectSingleNodes" (für mehrere) an. Die Abfrage selbst wird über XPath gemacht.
Beispiel für einen einzelnen Knoten:
Console.WriteLine(root.SelectSingleNode("./Klausurdaten/ProfName").InnerText);
oder für eine Liste:
XmlNodeList nodes = root.SelectNodes("./Noten/Student");
foreach(XmlNode i in nodes)
{
Console.WriteLine(i["Matrikelnummer"].InnerText);
}
ich hoffe ich konnte dir weiterhelfen,
-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).
Mein Blog: Yellow's Blog auf sqlgut.de
Achte ausserdem auf die Schreibweise von Martrikelnummer 🙂
Achtung! - Hinter dir ist ein dreiköpfiger Affe!