ASP.NET 在程序中动态删除、修改配置文件节点值的方法

第一步:在App_Code文件夹下新建一个类ReadWriteConfig,代码在博文后面,可以完全复制

第二步:如果在Web.config中有以下的节点及值,可以按第三步中的方法进行操作

<appSettings>

    <add key="FileUploadSize" value="10240" />

    <add key="FileUploadType" value="JPG|GIF|PNG" />   
</appSettings>
第三步:使用ReadWriteConfig类进行操作

(1)修改节点值

  bool b = false; //成功操作的返回值
  ReadWriteConfig config = new ReadWriteConfig();
  b = config.SetValue("FileUploadSize", 一个新值);

(2) 删除节点

ReadWriteConfig config = new ReadWriteConfig();
config.removeElement("FileUploadType");

(3) 查看节点值

ReadWriteConfig config = new ReadWriteConfig();
SearchedValue = config.readConfigDoc("FileUploadSize");

搞定,收工!!!!

有什么问题的话可以直接留言哟……………………

ReadWriteConfig类的内容

using System;
using System.Configuration;
using System.Reflection;
using System.Web;
using System.Xml;
public enum ConfigFileType
{
    WebConfig,
    AppConfig
}

/// <summary>
/// Summary description for ReadWriteConfig.
/// </summary>
public class ReadWriteConfig
{
    public string docName = String.Empty;
    private XmlNode node = null;
    private int _configType;
    public int ConfigType
    {
        get { return _configType; }
        set { _configType = value; }
    }

    #region SetValue
    public 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_x_x_x_x_x("add");
                entry.SetAttribute("key", key);
                entry.SetAttribute("value", value);
                node.AppendChild(entry);
            }
            //save it 
            saveConfigDoc(cfgDoc, docName);
            return true;
        }
        catch
        {
            return false;
        }
    }

    #endregion

    #region saveConfigDoc
    private 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;
        }
    }

    public string readConfigDoc(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");
            }
            XmlElement addElem = (XmlElement)node.SelectSingleNode("//add[@key='" + elementKey + "']");

            if (addElem != null)
            {
                return addElem.GetAttribute("value");
            }
            // not found, so we need to add the element, key and value 
            else
            {
                return "";
            }
        }
        catch
        {
            return "";
        }
    }
    #endregion

    #region removeElement
    public 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;
        }
    }
    #endregion

    #region modifyElement
    public 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;
        }
    }
    #endregion

    #region loadConfigDoc
    private XmlDocument loadConfigDoc(XmlDocument cfgDoc)
    {
        // load the config file 
        if (Convert.ToInt32(ConfigType) == Convert.ToInt32(ConfigFileType.AppConfig))
        {
            docName = ((Assembly.GetEntryAssembly()).GetName()).Name;
            docName += ".exe.config";
        }
        else
        {
            docName = HttpContext.Current.Server.MapPath("~/Web.config"); //你的配置文件名称
        }
        cfgDoc.Load(docName);
        return cfgDoc;
    }
    #endregion
}

posted @ 2011-09-29 10:57  易独  阅读(321)  评论(0编辑  收藏  举报
乐巴儿 一个有声音的公众号
长按,识别二维码,加关注