Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Einfache XML Datei lesen - Direkter Zugriff auf Unterknoten
Surrendert
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Einfache XML Datei lesen - Direkter Zugriff auf Unterknoten

beantworten | zitieren | melden

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!!
private Nachricht | Beiträge des Benutzers
Yellow
myCSharp.de - Experte

Avatar #avatar-2347.png


Dabei seit:
Beiträge: 476

Knoten auslesen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Powerslave
myCSharp.de - Member



Dabei seit:
Beiträge: 554

beantworten | zitieren | melden

Achte ausserdem auf die Schreibweise von Martrikelnummer
Achtung! - Hinter dir ist ein dreiköpfiger Affe!
private Nachricht | Beiträge des Benutzers
El Zoido
myCSharp.de - Member

Avatar #avatar-1692.gif


Dabei seit:
Beiträge: 23

beantworten | zitieren | melden

Martrikelnummer?

Welche Sprache ist das?
private Nachricht | Beiträge des Benutzers