Entwickler-Ecke

IO, XML und Registry - Vokabeltrainer mit XML


Marmelade - Di 12.01.10 17:12
Titel: Vokabeltrainer mit XML
Moin
Ich wollte mal einen Vokabeltrainer schreiben. Das Problem war nur, dass ich nicht wusste wie ich die Vokabeln abspeichern soll. Hab mich dann mal umgeguckt und bin zu dem Entschluss gekommen, dass XML ne gute Lösung für das Problem wär.
Jetzt habe ich nur noch nie mit XML gearbeitet :(
Gibts da einfache Tut's zu oder kann mir das einer erklären? Gesucht habe ich schon, aber nicht gefunden was ich brauche.

MfG Marmelade


danielf - Di 12.01.10 18:04

Hallo,
XML ist bestimmt gut geeignet für dein Vorhaben. Tutorials finde ich wie Sand am Meer?? Was ist den da dein Problem?

Gruß Daniel


Marmelade - Di 12.01.10 18:20

Hi
Gut dann bin ich da schon mal auf der sicheren Seite :)
Ich habe schon im Galileo OpenBook nachgeschaut, dort stand nur, dass XML unterstützt wird, sonst eigentlich nichts brauchbares.
Ahh doch grade was bei TSQL gefunden. Hoffe mal das ich damit klar komme.
Sry das ich nicht ordentlich gesucht habe.

MfG Marmelade


Marmelade - Do 14.01.10 19:41

Okay begriffen habe ich XML jetzt einigermaßen. Ich habe nur noch ein problem beim abspeichern der Vokabeln.
Meine XML-Datei sieht so aus :

XML-Daten
1:
<?xml version="1.0" encoding="utf-8"?><Vokabeln><v1><known>Hallo</known><unknown>Hello</unknown></v1><Config>2</Config></Vokabeln>                    


Immer wenn ich jetzt die Anzahl der bisher eingegebenen VOkabeln auslesen will bekomme ich folgendes:
Das Element 'Config' wurde nicht gefunden. Zeile 1, Position 50.

Dabei steht doch Config da drinne?

Mein Code sieht so aus:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
private void SaveVOK()
        {
            
            string anz = GetVoks().ToString();
            MessageBox.Show(anz);
            int intanz;
            int.TryParse(anz, out intanz);
            intanz++;
            string anz2 = intanz.ToString();
            
            XmlWriter writer =  XmlWriter.Create(Application.StartupPath + "\\Vokabeln.xml");
            
            writer.WriteStartDocument();

            writer.WriteStartElement("Vokabeln");

            writer.WriteStartElement("v"+anz);

            writer.WriteStartElement("known");
            writer.WriteString(textBox1.Text);
            writer.WriteEndElement();

            writer.WriteStartElement("unknown");
            writer.WriteString(textBox2.Text);
            writer.WriteEndElement();

            writer.WriteEndElement();

            writer.WriteStartElement("Config");
            writer.WriteString(anz2);
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Close();

            MessageBox.Show("gespeichert");            
        }

        private string GetVoks()
        {
            XmlReader reader = XmlReader.Create(Application.StartupPath + "\\Vokabeln.xml");

            reader.ReadStartElement("Vokabeln");

                reader.ReadStartElement("Config");
                    string anz = reader.ReadString();
                reader.ReadEndElement();
            reader.ReadEndElement();

            reader.Close();

            string anz2 = anz.Substring(1);
            return anz2;

        }


Was mache ich falsch?
MfG Marmelade


danielf - Do 14.01.10 19:53

Gute Frage :o Mit dem XmlReader kenne ich mich nicht so aus. Ich vermute du musst noch die anderen Elemente in der Reihenfolge auslesen.

Warum nimmst du nicht XmlDocument?

Damit ist es wohl viel einfacher und ich könnte dir helfen ;)


Christoph1972 - Do 14.01.10 20:34

Hi,


schau dir mal die Methoden WriteXml und ReadXml der DataTable an, bzw. des DataSet. Einfacher geht es nicht :wink:


Marmelade - Do 14.01.10 20:41

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:


Warum nimmst du nicht XmlDocument?

Damit ist es wohl viel einfacher und ich könnte dir helfen ;)


Wenn du mir das mit XmlDocument erklärst, ich habd as nämlich damit nicht so richtig verstanden.

MfG Marmelade