`
wsql
  • 浏览: 11778376 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

C#对App.config文件或者web.config文件中节点的操作类

 
阅读更多
//==============================================
// FileName: ConfigManager
// Description: 静态方法业务类,用于对C#、ASP.NET中的WinForm & WebForm 项目程序配置文件
// app.config和web.config的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作。
//==============================================
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using TempusMq;

namespace Kevin.DAL
{
public enum ConfigurationFile
{
AppConfig=1,
WebConfig=2
}

/// <summary>
/// ConfigManager 应用程序配置文件管理器
/// </summary>
public class ConfigManager
{
public ConfigManager()
{
//
// TODO: 在此处添加构造函数逻辑
//
}


/// <summary>
/// 对[appSettings]节点依据Key值读取到Value值,返回字符串
/// </summary>
/// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
/// <param name="key">要读取的Key值</param>
/// <returns>返回Value值的字符串</returns>
public static string ReadValueByKey(ConfigurationFile configurationFile, string key)
{
string value = string.Empty;
string filename = string.Empty;
if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
{
filename = System.Windows.Forms.Application.ExecutablePath + ".config";
}
else
{
filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
}

XmlDocument doc = new XmlDocument();
doc.Load(filename); //加载配置文件

XmlNode node = doc.SelectSingleNode("//appSettings"); //得到[appSettings]节点

////得到[appSettings]节点中关于Key的子节点
XmlElement element = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");

if (element != null)
{
value = element.GetAttribute("value");
}

return value;
}

/// <summary>
/// 对[connectionStrings]节点依据name值读取到connectionString值,返回字符串
/// </summary>
/// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
/// <param name="name">要读取的name值</param>
/// <returns>返回connectionString值的字符串</returns>
public static string ReadConnectionStringByName(ConfigurationFile configurationFile, string name)
{
string connectionString = string.Empty;
string filename = string.Empty;
if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
{
filename = System.Windows.Forms.Application.ExecutablePath + ".config";
}
else
{
filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
}

XmlDocument doc = new XmlDocument();
doc.Load(filename); //加载配置文件

XmlNode node = doc.SelectSingleNode("//connectionStrings"); //得到[appSettings]节点

////得到[connectionString]节点中关于name的子节点
XmlElement element = (XmlElement)node.SelectSingleNode("//add[@name='" + name + "']");

if (element != null)
{
connectionString = element.GetAttribute("connectionString");
}

return connectionString;
}

/// <summary>
/// 更新或新增[appSettings]节点的子节点值,存在则更新子节点Value,不存在则新增子节点,返回成功与否布尔值
/// </summary>
/// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
/// <param name="key">子节点Key值</param>
/// <param name="value">子节点value值</param>
/// <returns>返回成功与否布尔值</returns>
public static bool UpdateOrCreateAppSetting(ConfigurationFile configurationFile, string key, string value)
{
bool isSuccess = false;
string filename = string.Empty;
if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
{
filename = System.Windows.Forms.Application.ExecutablePath + ".config";
}
else
{
filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
}

XmlDocument doc = new XmlDocument();
doc.Load(filename); //加载配置文件

XmlNode node = doc.SelectSingleNode("//appSettings"); //得到[appSettings]节点

try
{
////得到[appSettings]节点中关于Key的子节点
XmlElement element = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");

if (element != null)
{
//存在则更新子节点Value
element.SetAttribute("value", value);
}
else
{
//不存在则新增子节点
XmlElement subElement = doc.CreateElement("add");
subElement.SetAttribute("key", key);
subElement.SetAttribute("value", value);
node.AppendChild(subElement);
}

//保存至配置文件(方式一)
using (XmlTextWriter xmlwriter = new XmlTextWriter(filename, null))
{
xmlwriter.Formatting = Formatting.Indented;
doc.WriteTo(xmlwriter);
xmlwriter.Flush();
}

isSuccess = true;
}
catch (Exception e)
{
isSuccess = false;
//输出的调试字符串
string strOuput = string.Format("更新或新增[appSettings]节点的子节点值失败:{0}\n", e.Message);
//将信息写入到日志输出文件
DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);

}

return isSuccess;
}

/// <summary>
/// 更新或新增[appSettings]节点的子节点值,存在则更新子节点Value,不存在则新增子节点,返回成功与否布尔值
/// </summary>
/// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
/// <param name="key">子节点Key值</param>
/// <param name="value">子节点value值</param>
/// <returns>返回成功与否布尔值</returns>
public static bool UpdateOrCreateAppSetting(ConfigurationFile configurationFile,string configFileName,string key, string value)
{
bool isSuccess = false;
string filename = configFileName;

XmlDocument doc = new XmlDocument();
doc.Load(filename); //加载配置文件
XmlNode node = doc.SelectSingleNode("//appSettings"); //得到[appSettings]节点

try
{
////得到[appSettings]节点中关于Key的子节点
XmlElement element = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");

if (element != null)
{
//存在则更新子节点Value
element.SetAttribute("value", value);
}
else
{
//不存在则新增子节点
XmlElement subElement = doc.CreateElement("add");
subElement.SetAttribute("key", key);
subElement.SetAttribute("value", value);
node.AppendChild(subElement);
}

//保存至配置文件(方式一)
using (XmlTextWriter xmlwriter = new XmlTextWriter(filename, null))
{
xmlwriter.Formatting = Formatting.Indented;
doc.WriteTo(xmlwriter);
xmlwriter.Flush();
}

isSuccess = true;
}
catch (Exception e)
{
isSuccess = false;
//输出的调试字符串
string strOuput = string.Format("更新或新增[appSettings]节点的子节点值失败:{0}\n", e.Message);
//将信息写入到日志输出文件
DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);

}
return isSuccess;
}


/// <summary>
/// 更新或新增[connectionStrings]节点的子节点值,存在则更新子节点,不存在则新增子节点,返回成功与否布尔值
/// </summary>
/// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
/// <param name="name">子节点name值</param>
/// <param name="connectionString">子节点connectionString值</param>
/// <param name="providerName">子节点providerName值</param>
/// <returns>返回成功与否布尔值</returns>
public static bool UpdateOrCreateConnectionString(ConfigurationFile configurationFile, string name, string connectionString, string providerName)
{
bool isSuccess = false;
string filename = string.Empty;
if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
{
filename = System.Windows.Forms.Application.ExecutablePath + ".config";
}
else
{
filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
}

XmlDocument doc = new XmlDocument();
doc.Load(filename); //加载配置文件

XmlNode node = doc.SelectSingleNode("//connectionStrings"); //得到[connectionStrings]节点

try
{
////得到[connectionStrings]节点中关于Name的子节点
XmlElement element = (XmlElement)node.SelectSingleNode("//add[@name='" + name + "']");

if (element != null)
{
//存在则更新子节点
element.SetAttribute("connectionString", connectionString);
element.SetAttribute("providerName", providerName);
}
else
{
//不存在则新增子节点
XmlElement subElement = doc.CreateElement("add");
subElement.SetAttribute("name", name);
subElement.SetAttribute("connectionString", connectionString);
subElement.SetAttribute("providerName", providerName);
node.AppendChild(subElement);
}

//保存至配置文件(方式二)
doc.Save(filename);

isSuccess = true;
}
catch (Exception e)
{
isSuccess = false;
//输出的调试字符串
string strOuput = string.Format("更新或新增[connectionStrings]节点的子节点值:{0}失败:{1}\n",name,e.Message);
//将信息写入到日志输出文件
DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);
}

return isSuccess;
}

/// <summary>
/// 删除[appSettings]节点中包含Key值的子节点,返回成功与否布尔值
/// </summary>
/// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
/// <param name="key">要删除的子节点Key值</param>
/// <returns>返回成功与否布尔值</returns>
public static bool DeleteByKey(ConfigurationFile configurationFile, string key)
{
bool isSuccess = false;
string filename = string.Empty;
if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
{
filename = System.Windows.Forms.Application.ExecutablePath + ".config";
}
else
{
filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
}

XmlDocument doc = new XmlDocument();
doc.Load(filename); //加载配置文件

XmlNode node = doc.SelectSingleNode("//appSettings"); //得到[appSettings]节点

////得到[appSettings]节点中关于Key的子节点
XmlElement element = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");

if (element != null)
{
//存在则删除子节点
element.ParentNode.RemoveChild(element);
}
else
{
//不存在
}

try
{
//保存至配置文件(方式一)
using (XmlTextWriter xmlwriter = new XmlTextWriter(filename, null))
{
xmlwriter.Formatting = Formatting.Indented;
doc.WriteTo(xmlwriter);
xmlwriter.Flush();
}

isSuccess = true;
}
catch (Exception e)
{
//输出的调试字符串
string strOuput = string.Format("删除[appSettings]节点中包含Key:{0}值的子节点失败:{1}\n",key, e.Message);
//将信息写入到日志输出文件
DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);
}

return isSuccess;
}

/// <summary>
/// 删除[connectionStrings]节点中包含name值的子节点,返回成功与否布尔值
/// </summary>
/// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
/// <param name="name">要删除的子节点name值</param>
/// <returns>返回成功与否布尔值</returns>
public static bool DeleteByName(ConfigurationFile configurationFile, string name)
{
bool isSuccess = false;
string filename = string.Empty;
if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
{
filename = System.Windows.Forms.Application.ExecutablePath + ".config";
}
else
{
filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
}

XmlDocument doc = new XmlDocument();
doc.Load(filename); //加载配置文件

XmlNode node = doc.SelectSingleNode("//connectionStrings"); //得到[connectionStrings]节点

////得到[connectionStrings]节点中关于Name的子节点
XmlElement element = (XmlElement)node.SelectSingleNode("//add[@name='" + name + "']");

if (element != null)
{
//存在则删除子节点
node.RemoveChild(element);
}
else
{
//不存在
}

try
{
//保存至配置文件(方式二)
doc.Save(filename);

isSuccess = true;
}
catch (Exception e)
{
isSuccess = false;
//输出的调试字符串
string strOuput = string.Format("删除[connectionStrings]节点中包含name:{0}值的子节点失败:{1}\n",name,e.Message);
//将信息写入到日志输出文件
DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);
}

return isSuccess;
}
}

}


分享到:
评论

相关推荐

    浅谈c#中config.exe 引发的一些问题

    //c#可以添加内置的app.config,我们通过ConfigrationManager类可以 //可以很轻松的操作相关节点,操作的方式,这里不做多介绍, //引发的问题 当程序编译的时候会自动生成 程序名.config.exe这样格式的文件 //这...

    C# ConfigHelper 辅助类介绍

    //==============================================// FileName: ConfigManager// Description: 静态方法业务类,用于对C#、ASP.NET中的WinForm & WebForm 项目程序配置文件// app.config和web.config的...

    C#图书馆管理系统 vs2005+sqlserv er2005

    (1)打开源程序路径下TM\10\LibraryMS文件夹中, 将该文件夹中的Web.Config文件以记事本方式打开,将数据源连接服务器的名称更改为本机SQL Server 2005服务器的名称,如图1.4所示。 图1.4 修改服务器名称 配置IIS...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    14.8.2 修改Web.config文件 503 14.8.3 创建程序集资源(.resx)文件 504 14.8.4 测试结果 505 14.9 小结 506 第15章 个性化 507 15.1 个性化模型 507 15.2 创建个性化属性 508 15.2.1 添加简单的个性化属性 ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    5.3.2 web.config文件 5.3.3 设置 5.3.4 5.3.5 5.3.6 5.3.7 通过编程读写配置节 5.3.8 网站管理工具(WAT) 5.3.9 扩展配置文件结构 5.3.10 加密配置节 5.4 .NET组件 5.4.1 创建组件 5.4.2 ...

    网上购物的

    (1)打开源程序路径下NetShop文件夹中的Web.config文件,以记事本方式打开。 (2)将数据库服务器名称改为本机SQL Server 2005服务器名称,如图1.4所示。 图1.4 在Web.config文件中修改服务器名称 3.配置IIS (1...

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

    仿淘宝网程序无错版

    [注:将下面代码拷入web.config中的&lt;system.web&gt;&lt;/system.web&gt;节中] &lt;add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" /&gt; 其次:把BBS里Bin文件夹下的所有dll拷贝到根目录Bin的目录下 A...

    asp.net知识库

    C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用...

Global site tag (gtag.js) - Google Analytics