c#修改XML问题? 方法很多.参考System.Xml.XmlDocument 类 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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); } } }} <?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>一个项目中的例子,你照葫芦画票吧。 求助,关于如何判断机器是否连通的方法??? [原创]C# UDP穿越NAT,UDP打洞,UDP Hole Punching源代码 在设计原则里面,有提到“尽量使用组合,聚合来代替继承”,这个好处是什么? 关于DataGridView与SQL数据集无法同步的问题 关于实现对服务端文件的自动更新 关于网站广告图片轮换显示效果??? 下拉菜单的关联显示问题。急需高手。。。。。。。。。。。。。 关于Listview的一个问题 picturebox中的图片可以打印吗? link中如何将二维数组转化为字典呢?不通过循环 C#中类与类之间是怎么传递的呀 菜鸟求问~~
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);
}
}
}
}
<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>一个项目中的例子,你照葫芦画票吧。