winform開發中對App.Config的寫和讀操作

using System;
using System.Configuration;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Reflection;
namespace Common
{
    /// <summary>
    /// 對AppSettings節點進行增加,刪除,修改操作.
    /// </summary>
    public static class AppSettingsHelper
    {
        public static string docName = String.Empty;
        private static XmlNode node = null;
        /// <summary>
        /// 設置節點的值,若該節點不存在,則創建一個新的節點。
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="cfgType"></param>
        /// <returns></returns>
        public static bool SetValue(string key, string value)
        {
            XmlDocument cfgDoc = new XmlDocument();
            loadConfigDoc(cfgDoc);
            // retrieve the appSettings node   
            node = cfgDoc.SelectSingleNode("//appSettings");
            if (node == null)
            {
                throw new InvalidOperationException("appSettings section not found");
            }
            try
            {
                // XPath select setting "add" element that contains this key       
                XmlElement addElem = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");
                if (addElem != null)
                {
                    addElem.SetAttribute("value", value);
                }
                // not found, so we need to add the element, key and value   
                else
                {
                    XmlElement entry = cfgDoc.CreateElement("add");
                    entry.SetAttribute("key", key);
                    entry.SetAttribute("value", value);
                    node.AppendChild(entry);
                }
                //save it   
                saveConfigDoc(cfgDoc, docName);
                return true;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 獲取節點的值
        /// </summary>
        /// <param name="key"></param>
        /// <param name="cfgType"></param>
        /// <returns></returns>
        public static string GetValue(string key)
        {
            XmlDocument cfgDoc = new XmlDocument();
            loadConfigDoc(cfgDoc);
            // retrieve the appSettings node   
            node = cfgDoc.SelectSingleNode("//appSettings");
            if (node == null)
            {
                throw new InvalidOperationException("appSettings section not found");
            }

            // XPath select setting "add" element that contains this key       
            XmlElement addElem = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");
            if (addElem != null)
            {

                return addElem.GetAttribute("value");
            }
            // not found, so we need to add the element, key and value   
            else
            {
                throw new ArgumentException(string.Format("key '{0}' not found", key));
            }
        }
        private static void saveConfigDoc(XmlDocument cfgDoc, string cfgDocPath)
        {
            try
            {
                XmlTextWriter writer = new XmlTextWriter(cfgDocPath, null);
                writer.Formatting = Formatting.Indented;
                cfgDoc.WriteTo(writer);
                writer.Flush();
                writer.Close();
                return;
            }
            catch
            {
                throw;
            }
        }
        /// <summary>
        /// 移除節點
        /// </summary>
        /// <param name="elementKey"></param>
        /// <param name="cfgType"></param>
        /// <returns></returns>
        public static bool RemoveElement(string elementKey)
        {
            try
            {
                XmlDocument cfgDoc = new XmlDocument();
                loadConfigDoc(cfgDoc);
                // retrieve the appSettings node  
                node = cfgDoc.SelectSingleNode("//appSettings");
                if (node == null)
                {
                    throw new InvalidOperationException("appSettings section not found");
                }
                // XPath select setting "add" element that contains this key to remove      
                node.RemoveChild(node.SelectSingleNode("//add[@key='" + elementKey + "']"));
                saveConfigDoc(cfgDoc, docName);
                return true;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 修改節點的值
        /// </summary>
        /// <param name="elementKey"></param>
        /// <param name="cfgType"></param>
        /// <returns></returns>
        public static bool ModifyElement(string elementKey)
        {
            try
            {
                XmlDocument cfgDoc = new XmlDocument();
                loadConfigDoc(cfgDoc);
                // retrieve the appSettings node  
                node = cfgDoc.SelectSingleNode("//appSettings");
                if (node == null)
                {
                    throw new InvalidOperationException("appSettings section not found");
                }
                // XPath select setting "add" element that contains this key to remove      
                node.RemoveChild(node.SelectSingleNode("//add[@key='" + elementKey + "']"));
                saveConfigDoc(cfgDoc, docName);
                return true;
            }
            catch
            {
                return false;
            }
        }
        private static XmlDocument loadConfigDoc(XmlDocument cfgDoc)
        {
            //docName = ((Assembly.GetEntryAssembly()).GetName()).Name;
            docName = @"G:\C#\test\FileOperate\FileOperate\App.config";
            //docName += ".config";
            cfgDoc.Load(docName);
            return cfgDoc;
        }
    }
}

 

//調用

using Common;

......

//修改server的值,如果沒有創建

bool b = AppSettingsHelper.SetValue("server", "adfwer");

//移除serverbool b = AppSettingsHelper.RemoveElement("server");

//獲得server的值string str = AppSettingsHelper.GetValue("ConnectionString");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章