C# Probleme mit XML

rene87

Lieutenant
Registriert
Mai 2007
Beiträge
752
Moin
wie der Name schon sagt habe ich Probleme wenn ich eine XML Datei mit C# auslesen will, es soll ein kleines Frage Antwort Spiel zum geburstag meines besten Kumpels werden wo er auf bestimmte Fragen (des wegen die ID) die Passende Antwort geben soll.
Code:
<?xml version="1.0" encoding="utf-8" ?>
<Fragen>
  <Frage>
    <ID>1</ID>
    <Antwort>Chai</Antwort>
  </Frage>
  <Frage>
    <ID>2</ID>
    <Antwort>Hallo</Antwort>
  </Frage>
  <Frage>
    <ID>3</ID>
    <Antwort>Computer</Antwort>
  </Frage>
  <Frage>
    <ID>4</ID>
    <Antwort>Zuhause</Antwort>
  </Frage>
  <Frage>
    <ID>5</ID>
    <Antwort>Rostock</Antwort>
  </Frage>
...
</Fragen>
Mein Problem schaut so aus das wenn ich das Programm starte es einen Absturz gibt, ich konnte den Fehler jetzt schon auf folgende Zeilen eingrenzen
Code:
XmlDocument Fragen;
string Wort;
... 
Fragen = new XmlDocument();
Fragen.Load("Fragen.xml");
XmlNode node1 = Fragen.SelectSingleNode("/Fragen/Farge/Antwort");
Wort = node1.InnerText;
wenn ich es schrittweise ausführen lasse merke ich das node1=Nil, also nicht zugewiesen, sieht einer meinen Fehler oder gehe ich ganz falsch an die Sache ran.

René
 
Code:
XmlNode node1 = Fragen.SelectSingleNode("/Fragen/[color=red]Farge[/color]/Antwort");
:)
 
Tipp, erstelle mit dem XSD generator eine Klasse deines XML ;) (zuerst das XSD aus dem wird dann die Klasse erstellt),dann kannst du viel leichter das xml einlesen/speichern. (und musst nicht mit XPath arbeiten)
 
ok danke für die Hilfe
@olampl kannst du das mit den xsd mal erklären, davon habe ich noch nichts gehört.
 
Du solltest dir mal was zum Thema Serialization durchlesen.

Es gibt 2 relativ einfache Möglichkeiten:

1) Du hast schon eine .xml Datei vorgegeben und willst aus dieser die Fragen einlesen.
Das geht am einfachsten wenn du sie deserialisierst.
Dazu brauchst du aber eine Klasse, in die dann die Daten der .xml Datei geladen werden.

Um diese Klasse nicht mühsam selber schreiben zu müssen, kannst du XSD benutzen
Hier gibts ne gute Anleitung: klick

2)
Du willst deine Fragen in einer .xml Datei speichern und sie später wieder laden/auslesen.

Dazu erstellst du dir eine Klasse die die Fragen hält und serialisierst sie in ne .xml Datei.
Dann kannst du einfach später wieder die .xml Datei in die ursprüngliche Klasse deserialisieren.
 
rene87 schrieb:
kannst du das mit den xsd mal erklären, davon habe ich noch nichts gehört.
lesen bildet ;), ne im ernst Grantig hat es super erklaert und dir das passende Beispiel rausgesucht. (Googel hilft)

Grantig schrieb:
Du solltest dir mal was zum Thema Serialization durchlesen.
Hier gibts ne gute Anleitung: klick
^^ das ist es ;)

Grantig schrieb:
2)
Du willst deine Fragen in einer .xml Datei speichern und sie später wieder laden/auslesen.

Dazu erstellst du dir eine Klasse die die Fragen hält und serialisierst sie in ne .xml Datei.
Dann kannst du einfach später wieder die .xml Datei in die ursprüngliche Klasse deserialisieren.

Nun wenn er punkt 1 hat, ist punkt 2 selbstredend, da er die Klasse bereits hat. ;)
 
nochmal Danke für eure Hilfe jetzt klappt es so wie ich mir das Vorstelle :D
 
Zurück
Oben