方法很多.参考System.Xml.XmlDocument 类

解决方案 »

  1.   

    using System;
    using System.Xml;
    using System.Configuration;namespace XFService
    {
    /// <summary>
    /// 负责读写应用程序配置文件,即app.config的读写。
    /// </summary>
    public class Configer
    {
    #region 私有成员
    private static Configer current=new Configer();
    private string xfdbServer;
    private string xfdbDatabase;
    private string xfdbUser;
    private string xfdbPassword;
    private string peakServer;
    private string peakDatabase;
    private string peakUser;
    private string peakPassword;
    private int interval;
    #endregion
    private Configer()
    {
    xfdbServer=GetNodeValue("CXFDB_SQLServerIP");
    xfdbDatabase=GetNodeValue("CXFDB_DB");
    xfdbUser=GetNodeValue("CXFDB_User");
    xfdbPassword=GetNodeValue("CXFDB_Password"); peakServer=GetNodeValue("PEAK_SQLServerIP");
    peakDatabase=GetNodeValue("PEAK_DB");
    peakUser=GetNodeValue("PEAK_User");
    peakPassword=GetNodeValue("PEAK_Password");
    try
    {
    interval=Int32.Parse(GetNodeValue("Interval"));
    }
    catch(Exception e)
    {
    interval=120;
    Logger.Current.Log("读取配置出现了问题,以下是错误描述:"+e.Message);
    }
    }

    /// <summary>
    /// 获取当前配置。
    /// </summary>
    public static Configer Current
    {
    get
    {
    if(current==null)
    {
    current=new Configer();
    }
    return current;
    }
    }
    #region 消防审批数据库配置信息
    /// <summary>
    /// 消防审批数据库数据库服务器IP。
    /// </summary>
    public string CXFDBServer
    {
    get
    {
    return xfdbServer;
    }
    set
    {
    SetNodeValue("CXFDB_SQLServerIP",value);
    }
    } /// <summary>
    /// 消防审批数据库用户名
    /// </summary>
    public string CXFDBUser
    {
    get
    {
    return xfdbUser;
    }
    set
    {
    SetNodeValue("CXFDB_User",value);
    }
    } /// <summary>
    /// 消防审批数据库登录密码
    /// </summary>
    public string CXFDBPassword
    {
    get
    {
    return xfdbPassword;
    }
    set
    {
    SetNodeValue("CXFDB_Password",value);
    }
    } /// <summary>
    /// 消防审批数据库表
    /// </summary>
    public string CXFDBDataBase
    {
    get
    {
    return xfdbDatabase;
    }
    set
    {
    SetNodeValue("CXFDB_DB",value);
    }
    }
    #endregion
    /// <summary>
    /// 更新时间间隔,以秒为单位
    /// </summary>
    public int Interval
    {
    get
    {
    return interval;
    }
    set
    {
    SetNodeValue("Interval",value.ToString());
    }
    }
    #region 停车场数据库配置信息
    /// <summary>
    /// 停车场数据库IP
    /// </summary>
    public string PEAKServer
    {
    get
    {
    return peakServer;
    }
    set
    {
    SetNodeValue("PEAK_SQLServerIP",value);
    }
    } /// <summary>
    /// 停车场数据库数据表
    /// </summary>
    public string PEAKDataBase
    {
    get
    {
    return peakDatabase;
    }
    set
    {
    SetNodeValue("PEAK_DB",value);
    }
    } /// <summary>
    /// 连接停车场系统数据库的用户名
    /// </summary>
    public string PEAKUser
    {
    get
    {
    return peakUser;
    }
    set
    {
    SetNodeValue("PEAK_User",value);
    }
    } /// <summary>
    /// 连接停车场系统数据库的用户名
    /// </summary>
    public string PEAKPassword
    {
    get
    {
    return peakPassword;
    }
    set
    {
    SetNodeValue("PEAK_Password",value);
    }
    }
    #endregion
    /// <summary>
    /// 获取节点值,注意如果不是第一次读取,则会从缓存中读取
    /// </summary>
    /// <param name="nodeName">节点名称</param>
    /// <returns></returns>
    private string GetNodeValue(string nodeName)
    {
    return System.Configuration.ConfigurationSettings.AppSettings[nodeName];
    } /// <summary>
    /// 获取节点值,指定是否使用缓存
    /// </summary>
    /// <param name="nodeName"></param>
    /// <param name="readAllTime">如果为true,则每次都直接从配置文件中读取,而不实用缓存</param>
    /// <returns></returns>
    public string GetNodeValue(string nodeName,bool readAllTime)
    {
    if(!readAllTime)
    {
    return GetNodeValue(nodeName);
    }
    else
    {
    XmlDocument doc=new XmlDocument();
    doc.Load(System.Windows.Forms.Application.ExecutablePath+".config");
    XmlNode node;
    XmlElement element;
    node=doc.SelectSingleNode("//appSettings");
    element=node.SelectSingleNode("//add[@key='" + nodeName + "']") as XmlElement;
    if(element!=null)
    {
    return element.GetAttribute("value");
    }
    else
    {
    return "";
    }
    }
    } /// <summary>
    /// 写入节点值
    /// </summary>
    /// <param name="nodeName"></param>
    /// <param name="nodeValue"></param>
    private void SetNodeValue(string nodeName,string nodeValue)
    {
    XmlDocument doc=new XmlDocument();
    doc.Load(System.Windows.Forms.Application.ExecutablePath+".config");
    XmlNode node;
    XmlElement element;
    node=doc.SelectSingleNode("//appSettings");
    element=node.SelectSingleNode("//add[@key='" + nodeName + "']") as XmlElement;
    if(element!=null)
    {
    element.SetAttribute("value",nodeValue);
    }
    doc.Save(System.Windows.Forms.Application.ExecutablePath+".config");
    RefreshConfig();
    } /// <summary>
    /// 刷新配置数据
    /// </summary>
    private void RefreshConfig()
    {
    xfdbServer=GetNodeValue("CXFDB_SQLServerIP",true);
    xfdbDatabase=GetNodeValue("CXFDB_DB",true);
    xfdbUser=GetNodeValue("CXFDB_User",true);
    xfdbPassword=GetNodeValue("CXFDB_Password",true); peakServer=GetNodeValue("PEAK_SQLServerIP",true);
    peakDatabase=GetNodeValue("PEAK_DB",true);
    peakUser=GetNodeValue("PEAK_User",true);
    peakPassword=GetNodeValue("PEAK_Password",true); try
    {
    interval=Int32.Parse(GetNodeValue("Interval"));
    }
    catch(Exception e)
    {
    interval=120;
    Logger.Current.Log("刷新出现了问题,以下是错误描述:"+e.Message);
    }
    }
    }
    }
      

  2.   

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
    <!--  -->
    <add key="CXFDB_SQLServerIP" value="127.0.0.1" />
    <add key="CXFDB_DB" value="ccc" />
    <add key="CXFDB_User" value="cc" />
    <add key="CXFDB_Password" value="cc" />

    <!--  -->
    <add key="PEAK_SQLServerIP" value="127.0.0.1" />
    <add key="PEAK_DB" value="ccc" />
    <add key="PEAK_User" value="ccc" />
    <add key="PEAK_Password" value="ccc" />

    <!--刷新间隔,以秒为单位-->
    <add key="Interval" value="120"/>
    </appSettings>
    </configuration>一个项目中的例子,你照葫芦画票吧。