C# XML-Konfigurationsdatei

Blechdose

Ensign
Registriert
Mai 2008
Beiträge
148
Hallo Community,

ich hab mich mal wieder C# zugewendet und schreibe ein kleines Programm. Dabei möchte ich (wie der Titel schon erraten lässt) mittels einer XML-Datei eine Konfiguration schreiben. Diese soll dann bei jedem Start aufgerufen werden und dementsprechend sollen sich Sachen an- bzw. ausschalten.
Soweit so gut, nun hab ich mir ein kleines Beispiel genauer angeschaut, allerdings komme ich mit den Variablen nicht ganz klar;

Code:
string textbox = "0";
            string codehigh = "0";
            string change = "0";
            

            // 0 = AN, 1 = AUS

            if (checkBox1.Checked == true)
            {
               // string textbox = "0";
            }
            if (checkBox1.Checked == false)
            {
               // string textbox = "1";
            }

            //XML-Writer:
            XmlTextWriter XMLconfig = new XmlTextWriter("settings.xml", null);
            XMLconfig.Formatting = Formatting.Indented;
            XMLconfig.WriteStartDocument(false);
            XMLconfig.WriteComment("Konfigurationsdatei");

            XMLconfig.WriteStartElement("Einstellung");
            XMLconfig.WriteStartElement("Netpad", null);

            XMLconfig.WriteElementString("Text", textbox);

            XMLconfig.WriteElementString("Code", codehigh);
            XMLconfig.WriteElementString("Change", change);
            XMLconfig.WriteEndElement();

            XMLconfig.Flush();
            XMLconfig.Close();
            // Ende XML-Reader
Das soll passieren wenn ein "Speichern-Button" geklickt wird. Jedoch geht das so ja nicht. Ich kenne das nur so in PHP, dass man eben Variablen einfach überschreiben kann. Wie geht das in C#?
Ist die Methode XML die bessere im Vergleich mit ini's?
Gibt es sonst noch was zu bedenken?

Bin sehr dankbar für jede Anregung ;)
 
Hier ein kleines Beispiel:
Code:
XmlDocument doc = new XmlDocument();
doc.Load(@"pfad/zur/datei.xml");

//Knoten hinzufügen
XmlNode rootnode = doc.CreateElement("Knotenname");
doc.AppendChild(rootnode);

//Statt alles an dein doc dranzuhängen kannst du auch Sachen an nodes dranhängen. zB:
myNode.AppendChild(doc.CreateElement("Knotenname"));

//Ganz wichtig: Speichern!
doc.Save(@"pfad/zur/datei.xml");

Jeder XML-Knoten hat das Objekt "InnerText", das die eigentlichen Daten speichert. Darauf kannst du so zugreifen:
meinText = doc.SelectSingleNode("/pfad/zum/Knoten").Innertext;
 
Vielen Dank schon mal für diese Lösungen! Das sieht beides schon sehr interessant aus.

Jedoch will ich doch eine CheckBox auslesen (also ob gecheckt oder nicht, falls ja wird soll meine Variable 0 sein, falls nein soll sie 1 sein). Diese Variable soll dann in die XML-Datei geschrieben werden. Also dachte ich wie oben, dass ich den Wert der Variable in der if-Abfrage ändere. Standardmäßig soll sie anfangs auf "0" sein.

Ich dachte mir das so, weil man dann vllt. später mit 0 und 1 leichter hantieren kann, also wenn das Programm die Konfigurationsdatei wieder lädt. Oder seh ich hier was falsch?
 
Würde ich dir nicht empfehlen. C# ist ja nicht mehr C. Es steht dir ein Datentyp zur Verfügung, der Boolean heißt. Das solltest du hier auf jedenfall statt 0 und 1 nutzen. Das Checked-Objekt ist ebenfalls vom Typ Bool. Du kannst das dann einfach so eindampfen: myTextbox.Text = checkBox1.Checked. Und kannst es auch easy in die Config schreiben:

doc.SelectSingleNode("/pfad/zum/Knoten").Innertext = checkBox1.Checked

Du lädst dann am Anfang den Knoten in eine Bool-Variable und speicherst die Variable am Ende vom Programm wieder nach XML.
 
Zuletzt bearbeitet:
Zurück
Oben