KeyValue Config

public class ConfigHelper
    {
        public static ScriptsHelper Scripts
        {
            get { return new ScriptsHelper(); }
        }
        public static ParametersHelper Parameters
        {
            get { return new ParametersHelper(); }
        }
    }
    public class ScriptsHelper
    {
        string fileName = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, @"Scripts.xml");
        public PerScript this[string name]
        {
            get
            {
                string value = Tools.ExecuteXPathInFile(fileName, string.Format(@"/Scripts/Script[@name=‘{0}‘]/text()", name.Trim()));
                string connection = Tools.ExecuteXPathInFile(fileName, string.Format(@"/Scripts/Script[@name=‘{0}‘]/@connectionName", name.Trim()));
                PerScript script = new PerScript(value, connection);
                return script;
            }
        }

        public class PerScript
        {
            public PerScript(string value, string connection)
            {
                m_Value = value;
                m_Connection = connection;
            }

            string m_Value;
            public string Value { get { return m_Value; } }

            string m_Connection;
            public string Connection { get { return m_Connection; } }
        }
    }

    public class ParametersHelper
    {
        string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConstValue.SERVICE_PARAMETER_FILE);
        public PerKeyValue this[string name]
        {
            get
            {
                string keyValueStr = Tools.ExecuteXPathInFile(fileName, string.Format(@"/KeyValues/KeyValue[@name=‘{0}‘]", name.Trim()));
                if (keyValueStr != null)
                {
                    PerKeyValue returnObj = new PerKeyValue(name, keyValueStr);
                    return returnObj;
                }
                else
                {
                    return null;
                }
            }
        }

        public class PerKeyValue
        {
            public PerKeyValue(string name, string keyValueStr)
            {
                m_KeyValueStr = keyValueStr;
                m_Name = name;
                m_Value = Tools.ExecuteXPathInString(keyValueStr, @"/KeyValue/text()");
            }

            string m_KeyValueStr;

            private string m_Name;
            public string Name { get { return m_Name; } }

            public PerKeyValueAttributes Attributes
            {
                get
                {
                    string[] temp = m_KeyValueStr.GetSubString(@"(?<=\<KeyValue\s+).+.(?=/?\>)");
                    if (temp != null && temp.Length > 0)
                        return new PerKeyValueAttributes(temp[0]);
                    else
                        return null;
                }
            }

            string m_Value;
            public string Value { get { return m_Value; } }

            public List<PerKeyValue> KeyValus
            {
                get
                {
                    List<PerKeyValue> list = null;
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(m_KeyValueStr);
                    XmlNodeList nodes = doc.SelectNodes("/KeyValue/KeyValue");
                    if (nodes != null && nodes.Count > 0)
                    {
                        list = new List<PerKeyValue>();
                        foreach (XmlNode item in nodes)
                        {
                            list.Add(new PerKeyValue(item.Attributes["name"].InnerText, item.OuterXml));
                        }
                    }
                    return list;
                }
            }

            public PerKeyValue this[string name]
            {
                get
                {
                    string keyValueStr = Tools.ExecuteXPathInString(m_KeyValueStr, string.Format(@"/KeyValue/KeyValue[@name=‘{0}‘]", name.Trim()));
                    if (keyValueStr != null)
                        return new PerKeyValue(name, keyValueStr);
                    else
                        return null;
                }
            }
        }

        public class PerKeyValueAttributes
        {
            public PerKeyValueAttributes(string attributes)
            {
                m_Attributes = attributes;
            }

            string m_Attributes = string.Empty;

            public string this[string name]
            {
                get
                {
                    string[] results = m_Attributes.GetSubString(string.Format(@"(?<={0}\s*="").+", name));
                    if (results != null && results.Length > 0)
                    {
                        return results[0].ReplaceString(@""".*", string.Empty);
                    }
                    else
                        return null;
                }
            }
        }
    }

  

时间: 2024-10-07 05:29:44

KeyValue Config的相关文章

执行系统命令

执行系统命令 os.system os.spawn* os.popen popen2.* commands.* 后面三个已经废弃,以上执行shell命令的相关的模块和函数的功能均在subprocess模块中实现,并提供了更加丰富的功能 call 执行命令,返回状态码. import subprocess ret1 = subprocess.call(["ls","-l"],shell=False) print ret1 ret2 = subprocess.call(

浅尝key-value数据库(三)——MongoDB的分布式

浅尝key-value数据库(三)——MongoDB的分布式 测试了单机MongoDB的随机读和写入性能,这一节来讲一讲MongoDB的分布式. MongoDB的分布式分成两种,一种是Replication,一种是Sharding.我们主要来看一下Sharding. 先贴一张结构示意图: MongoDB Auto-Sharding的配置非常简单,在不同的机器分别开启shard, config server, mongos的进程即可.(假设config serevr的IP为192.168.1.11

spring cloud: 使用consul来替换config server

上一篇提到了,eureka 2.x官方停止更新后,可以用consul来替代,如果采用consul的话,其实config server也没必要继续使用了,consul自带kv存储,完全可以取代config server的活儿. 步骤如下: 一.先添加jar依赖 // compile 'org.springframework.cloud:spring-cloud-starter-config' compile 'org.springframework.cloud:spring-cloud-start

Config Server高可用

一 简介构建高可用的Config Server集群,包括Config Server的高可用,以及依赖Git仓库的高可用. 二 Git仓库的高可用由于配置的内容都存储在Git仓库中,所以要想实现Config Server的高可用,必须有一个高可用的Git仓库.有两种方式可以实现Git仓库的高可用.1 使用第三方的Git仓库:这种方式非常简单,可使用例如Github.BitBucket.[email protected].Coding等提供的仓库托管服务,这种服务本身就已经实现了高可用.2 自建Gi

Config安全控制

1.config server引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> 2.config server配置bootstrap.yml文件 security: basic: enabled: true user: name

在Web.config或App.config中的添加自定义配置

.Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持.最近看到一些项目中还在自定义xml文件做程序的配置,所以忍不住写一篇用系统自定义配置的随笔了. 如果你已经对自定义配置了如指掌,请忽略这篇文章.? 言归正传,我们先来看一个最简单的自定义配置 <?xml version="1.0" encoding="utf-8" ?> <configuration>

Web.Config文件详解

一).Web.Config是以XML文件规范存储,配置文件分为以下格式    1.配置节处理程序声明      特点: 位于配置文件的顶部,包含在<configSections>标志中.    2.特定应用程序配置      特点:  位于<appSetting>中. 可以定义应用程序的全局常量设置等信息.    3.配置节设置      特点:  位于<system.Web>节中,控制Asp.net运行时的行为.    4.配置节组      特点:  用<se

C#读写app.config中的数据

C#读写app.config中的数据 读语句: String str = ConfigurationManager.AppSettings["DemoKey"]; 写语句: Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); cfa.AppSettings.Settings["DemoKey"].Value = "DemoVa

使用NewLisp设计Key-Value数据库系统

Lisp是一个很好的语言,最强大的就是其S-表达式,可以说是Lisp能活到今天的唯一一个原因.其次就是函数为基本类型和后来的闭包.当然Lisp也有很大的缺点,即:一般的设计师难以避免Lisp的缺点. Lisp有很多方言,很多子系列,可以说百花齐放,也可以说是散沙一盘.这就是Lisp的优点之一,同时也是其缺点之一,但是这些缺点主要是用Lisp的人造成的,而之所以会这样,是因为Lisp太容易滥用了(其缺点正是因为其优点导致的). NewLisp是一个非常强大的Lisp实现,也可以称为一个方言,是一个