zoukankan      html  css  js  c++  java
  • 用于获取或设置Web.config/*.exe.config中节点数据的辅助类

    1. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类

        /**//// <summary>

        /// 用于获取或设置Web.config/*.exe.config中节点数据的辅助类

        /// </summary>

        public sealed class AppConfig

        {

            private string filePath;

            /**//// <summary>

            /// 从当前目录中按顺序检索Web.Config和*.App.Config文件。

            /// 如果找到一个,则使用它作为配置文件;否则会抛出一个ArgumentNullException异常。

            /// </summary>

            public AppConfig()

            {

                string webconfig = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Web.Config");

                string appConfig = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile.Replace(".vshost", "");

                if (File.Exists(webconfig))

                {

                    filePath = webconfig;

                }

                else if (File.Exists(appConfig))

                {

                    filePath = appConfig;

                }

                else

                {

                    throw new ArgumentNullException("没有找到Web.Config文件或者应用程序配置文件, 请指定配置文件");

                }

            }

            /**//// <summary>

            /// 用户指定具体的配置文件路径

            /// </summary>

            /// <param name="configFilePath">配置文件路径(绝对路径)</param>

            public AppConfig(string configFilePath)

            {

                filePath = configFilePath;

            }

            /**//// <summary>

            /// 设置程序的config文件

            /// </summary>

            /// <param name="keyName">键名</param>

            /// <param name="keyValue">键值</param>

            public void AppConfigSet(string keyName, string keyValue)

            {

                //由于存在多个Add键值,使得访问appSetting的操作不成功,故注释下面语句,改用新的方式

                /**//*

                string xpath = "//add[@key=‘" + keyName + "‘]";

                XmlDocument document = new XmlDocument();

                document.Load(filePath);

                XmlNode node = document.SelectSingleNode(xpath);

                node.Attributes["value"].Value = keyValue;

                document.Save(filePath);

                 */

                XmlDocument document = new XmlDocument();

                document.Load(filePath);

                XmlNodeList nodes = document.GetElementsByTagName("add");

                for (int i = 0; i < nodes.Count; i++)

                {

                    //获得将当前元素的key属性

                    XmlAttribute attribute = nodes[i].Attributes["key"];

                    //根据元素的第一个属性来判断当前的元素是不是目标元素

                    if (attribute != null && (attribute.Value == keyName))

                    {

                        attribute = nodes[i].Attributes["value"];

                        //对目标元素中的第二个属性赋值

                        if (attribute != null)

                        {

                            attribute.Value = keyValue;

                            break;

                        }

                    }

                }

                document.Save(filePath);

            }

            /**//// <summary>

            /// 读取程序的config文件的键值。

            /// 如果键名不存在,返回空

            /// </summary>

            /// <param name="keyName">键名</param>

            /// <returns></returns>

            public string AppConfigGet(string keyName)

            {

                string strReturn = string.Empty;

                try

                {

                    XmlDocument document = new XmlDocument();

                    document.Load(filePath);

                    XmlNodeList nodes = document.GetElementsByTagName("add");

                    for (int i = 0; i < nodes.Count; i++)

                    {

                        //获得将当前元素的key属性

                        XmlAttribute attribute = nodes[i].Attributes["key"];

                        //根据元素的第一个属性来判断当前的元素是不是目标元素

                        if (attribute != null && (attribute.Value == keyName))

                        {

                            attribute = nodes[i].Attributes["value"];

                            if (attribute != null)

                            {

                                strReturn = attribute.Value;

                                break;

                            }

                        }

                    }

                }

                catch

                {

                    ;

                }

                return strReturn;

            }

            /**//// <summary>

            /// 获取指定键名中的子项的值

            /// </summary>

            /// <param name="keyName">键名</param>

            /// <param name="subKeyName">以分号(;)为分隔符的子项名称</param>

            /// <returns>对应子项名称的值(即是=号后面的值)</returns>

            public string GetSubValue(string keyName, string subKeyName)

            {

                string connectionString = AppConfigGet(keyName).ToLower();

                string[] item = connectionString.Split(new char[] {‘;‘});

                for (int i = 0; i < item.Length; i++)

                {

                    string itemValue = item[i].ToLower();

                    if (itemValue.IndexOf(subKeyName.ToLower()) >= 0) //如果含有指定的关键字

                    {

                        int startIndex = item[i].IndexOf("="); //等号开始的位置

                        return item[i].Substring(startIndex + 1); //获取等号后面的值即为Value

                    }

                }

                return string.Empty;

            }

    }

    AppConfig测试代码:

        public class TestAppConfig

        {

            public static string Execute()

            {

                string result = string.Empty;

                //读取Web.Config的

                AppConfig config = new AppConfig();

                result += "读取Web.Config中的配置信息:" + "/r/n";

                result += config.AppName + "/r/n";

                result += config.AppConfigGet("WebConfig") + "/r/n";

                config.AppConfigSet("WebConfig", DateTime.Now.ToString("hh:mm:ss"));

                result += config.AppConfigGet("WebConfig") + "/r/n/r/n";

                //读取*.App.Config的

                config = new AppConfig("TestUtilities.exe.config");

                result += "读取TestUtilities.exe.config中的配置信息:" + "/r/n";

                result += config.AppName + "/r/n";

                result += config.AppConfigGet("AppConfig") + "/r/n";

                config.AppConfigSet("AppConfig", DateTime.Now.ToString("hh:mm:ss"));

                result += config.AppConfigGet("AppConfig") + "/r/n/r/n";

                return result;

            }

        }

  • 相关阅读:
    fastText源码分析
    excel文件使用html导出
    oracle中对字符串进行分割,并反回随机段
    oracle锁表进行关闭
    .net中MVC Webapi多参数调用控制器方法
    C#线程调用带参数的方法,给控件赋值
    C#post调用接口并上传文件
    C#调用GPG命令进行加密解密文件操作
    C#中图片转换为Base64编码,Base64编码转换为图片
    GPG加密windows中使用
  • 原文地址:https://www.cnblogs.com/Veky/p/3256054.html
Copyright © 2011-2022 走看看