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);
}
}
///
/// Gets a value of the settings. If the setting does not exist, defaultValue is returned.
///
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
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);
}
}
}
}