Store settings in XML file in C#
using System; using System.IO; using System.Xml; namespace SomeNamespace { static class SettingsProvider { private const string CONFIG_FILE = "config.xml"; private static XmlDocument _xmlDoc = null; private static string ConfigPath { get { return Program.ApplicationFolder + @"\" + CONFIG_FILE; } } public static void Save(string key, string value) { XmlNode node = _xmlDoc.SelectSingleNode("./config/" + key); if (node != null) { node.InnerText = value; Save(); } else { // XML node doesnt exist thus create a new one Get(key, value); } } /// <summary> /// Gets a value of the settings. If the setting does not exist, defaultValue is returned. /// </summary> public static string Get(string key, string defaultValue) { if (_xmlDoc == null) { _xmlDoc = new XmlDocument(); // Load config.xml string fullPath = SettingsProvider.ConfigPath; if (!File.Exists(fullPath)) { // Xml declaration XmlDeclaration declaration = _xmlDoc.CreateXmlDeclaration("1.0", null, null); _xmlDoc.AppendChild(declaration); // Root node <config> XmlElement rootNode = _xmlDoc.CreateElement("config"); _xmlDoc.AppendChild(rootNode); Save(); } else { _xmlDoc.Load(fullPath); } } XmlNode node = _xmlDoc.SelectSingleNode("./config/" + key); if (node != null) { return node.InnerText; } else { // Add default value XmlElement newSetting = _xmlDoc.CreateElement(key); newSetting.InnerText = defaultValue; _xmlDoc.ChildNodes[1].AppendChild(newSetting); Save(); return defaultValue; } } public static void Save() { if (_xmlDoc != null) { _xmlDoc.Save(SettingsProvider.ConfigPath); } } } }
Provides access to key/value pairs stored in a config file in XML format.
Most popular snippets