zoukankan      html  css  js  c++  java
  • 变化App.config其中值,并保存

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;


    namespace HandPickCrawlerDB.Extensions
    {
        public class AppHelper
        {
            private static string _appconfig = null;


            public static string AppConfig
            {
                get
                {
                    if (_appconfig == null)
                    {
                        Type t = typeof(System.Configuration.ConfigurationManager).Assembly.GetType("System.Configuration.ClientConfigurationHost");
                        object cfghst = Activator.CreateInstance(t, true);
                        PropertyInfo pi = t.GetProperty("ConfigPaths", BindingFlags.Instance | BindingFlags.NonPublic);
                        object cfgpath = pi.GetValue(cfghst, null);


                        Type t1 = typeof(System.Configuration.ConfigurationManager).Assembly.GetType("System.Configuration.ClientConfigPaths");
                        pi = t1.GetProperty("ApplicationConfigUri", BindingFlags.Instance | BindingFlags.NonPublic);
                        string path = (string)pi.GetValue(cfgpath, null);


                        if (string.IsNullOrEmpty(path))
                            _appconfig = string.Empty;
                        else
                            _appconfig = path.Replace(".vshost.", ".");
                    }
                    return _appconfig;
                }
                set
                {
                    _appconfig = value;
                }
            }


            public static void SetSettingToAppConfig(string key, string value)
            {
                if (string.IsNullOrEmpty(key))
                {
                    throw new Exception("key not be null");
                }
                else
                {
                    key = key.Trim();
                }
                if (string.IsNullOrEmpty(value))
                    value = "";
                else
                    value = value.Trim();


                if (!File.Exists(AppConfig))
                {
                    throw new DirectoryNotFoundException();
                }
                File.SetAttributes(AppConfig, FileAttributes.Normal);
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(AppConfig);
                XmlNodeList xmllst = xmldoc.SelectNodes("/configuration/appSettings/add");
                if (xmldoc.SelectSingleNode("/configuration/appSettings") == null)
                {
                    XmlNode n2 = xmldoc.CreateNode("element", "appSettings", "");
                    n2.InnerXml = "<add key="" + key + "" value="" + value + ""/>";
                    xmldoc.SelectSingleNode("/configuration").AppendChild(n2);
                    xmldoc.Save(AppConfig);
                }
                else if (xmllst.Count == 0)
                {
                    XmlNode n2 = xmldoc.CreateNode("element", "add", "");
                    XmlAttribute xa = xmldoc.CreateAttribute("key");
                    xa.Value = key;
                    n2.Attributes.Append(xa);
                    xa = xmldoc.CreateAttribute("value");
                    xa.Value = value;
                    n2.Attributes.Append(xa);
                    xmldoc.SelectSingleNode("/configuration/appSettings").AppendChild(n2);
                    xmldoc.Save(AppConfig);
                }
                else
                {
                    bool existed = false;
                    foreach (XmlNode n1 in xmllst)
                    {
                        if (n1.Attributes["key"].Value.ToUpper() == key.ToUpper())
                        {
                            n1.Attributes["value"].Value = value;
                            xmldoc.Save(AppConfig);
                            existed = true;
                            break;
                        }
                    }
                    if (!existed)
                    {
                        XmlNode xmlnd = xmldoc.SelectSingleNode("/configuration/appSettings");
                        XmlNode n2 = xmldoc.CreateNode("element", "add", "");
                        XmlAttribute xa = xmldoc.CreateAttribute("key");
                        xa.Value = key;
                        n2.Attributes.Append(xa);
                        xa = xmldoc.CreateAttribute("value");
                        xa.Value = value;
                        n2.Attributes.Append(xa);
                        xmlnd.AppendChild(n2);
                        xmldoc.Save(AppConfig);
                    }
                }
                ConfigurationManager.RefreshSection("appSettings");
            }
        }
    }
  • 相关阅读:
    Eclipse编辑properties文件中文乱码
    Spark安装
    安装VirtualBox后,VMware不能上网
    Hadoop Eclipse插件编译
    MapReduce 常见问题
    MapReduce 气象数据集
    Maven构建Hadoop开发环境
    Eclipse安装Maven
    吴恩达深度学习笔记 course4 week2 深度卷积网络 实例探究
    吴恩达深度学习笔记 cousrse4 week1作业
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4583417.html
Copyright © 2011-2022 走看看