Weil ich es immer wieder vergesse und dann in diversen Projekten nachschauen muss, wollte ich es mir hier mal hin schreiben, so dass ich es auch mal griffbereit habe wenn ich das nächste mal danach suche 🙂
Hier geht es darum wie man seine Konfiguration in einer XML-Datei speichern kann.
Dies einfach aus dem Grund, da man eine XML-Datei sehr einfach handhaben kann und den inhalt in einem DataSet oder einer DataTable einlesen oder ausgeben lassen kann – sehr praktisch das.
Als erstes wollen wir eine DataTable anlegen.
Diese soll z.b. Die verbindungsinformationen für einen FTP-Server beinhalten und später in eine XML-Datei weg speichern.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Zuerst eine leere DataTable erstellen DataTable dt_config = new DataTable("config"); // dann die spalten hinzufügen dt_config.Columns.Add("ftp-server"); dt_config.Columns.Add("ftp-benutzer"); dt_config.Columns.Add("ftp-passwort"); // und nun eine Zeile einfügen und füllen DataRow dr_config = dt_config.NewRow(); dr_config["ftp-server"] = frm_config.txt_ftpserver.Text; dr_config["ftp-benutzer"] = frm_config.txt_ftpuser.Text; dr_config["ftp-passwort"] = frm_config.txt_ftppwd.Text; dt_config.Rows.Add(dr_config); // zum schluss wird die DataTable als XML-Datei gespeichert dt_config.WriteXml("config.xml", XmlWriteMode.WriteSchema); |
Wollen wir die Konfiguration im Programm wieder auslesen geht das wie folgt:
1 2 3 4 5 6 7 8 | // uerst die XML-Datei in eine DataTable einlesen dt_config.ReadXml("config.xml",XmlReadMode.ReadSchema); // Dann die Erste DataRow verwenden DataRow dr_config = dt_config.Rows[0]; // und damit dann die Werte zuweisen txt_ftpserver.Text = dr_config["ftp-server"].ToString(); txt_ftpuser.Text = dr_config["ftp-benutzer"].ToString(); txt_ftppwd.Text = dr_config["ftp-passwort"].ToString(); |
Ja – Eigentlich recht einfach 🙂
Bessere Alternative: Serialisierung!
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(VS.71).aspx
mhm…
Ist eine Alternative.. aber ob sie besser ist, ist wohl ansichtssache.
Der vorteil an deiser XML-Konfiguration ist ja, dass man sie manuell mit einem Editor ändern kann.
Ändern im Sinne von Konfigurieren – immerhin ist es eine Konfigurationsdatei.
Wenn ich jetzt eine Serialisierbare Klasse nehme und als Serialisiertes Objekt in eine Datei schreibe, dann kann ich auf diese Datei zwar noch mit einem Editor zugreifen – aber werte kann ich nicht ändern, da dort nur müll drin steht.
Hat alles seine vor- und nachteile 🙂
Danke. So eine Doku habe ich gesucht 🙂 Kann ich im XML File auch den Status einer Checkbox auslesen? Wenn ja, wie?
Warum sollte man dies nicht können? 🙂
Eine spalte:
dt_config.Columns.Add(„wert3“, typeof(System.Boolean));
Wert in die DataRow schreiben mit:
dr_config[„wert“] = checkboxname.Checked;
Auslesen und setzen des Wertes von der DataRow in die Checkbox:
checkboxname.Checked = Convert.ToBoolean(dr_config[„wert“]);
Das wars auch schon 🙂