前言:开发中经常会遇到加载一些配置文件信息,这些信息变化的概率很小,不需要实时的更新。这样的信息放在数据库里自然是不合适的,所以最好的办法是写在配置文件中,在程序第一次运行的时候加载到内存,以后用到的时候直接从内存读取就可以了。

这样做的好处:1、效率高,读取本地文件或内存信息和读取数据库中的信息,效率相比可想而知;2、不需要为这样的数据单独建立表;3,数据结构灵活,文件中的数据文件的结构组织很灵活。

下面是我的一种实现方式,仅供参考:

1.首先是配置文件类的设计。

 public static class AdminConfigManager
{
public static IList<AdminUser> AdminUsers { get; } = new List<AdminUser>(); #region 加载、保存相关
/// <summary>
/// 获取或设置配置文件路径。
/// </summary>
public static string ConfigFilePath { get; set; } /// <summary>
/// 加载配置。
/// </summary>
public static void LoadConfig()
{
XElement root = XElement.Load(ConfigFilePath);
AdminUsers.Clear();
foreach (XElement element in root.Elements("AdminUser"))
{
AdminUser adminUser = new AdminUser();
adminUser.Id = (string)element.Attribute("Id");
adminUser.Name = (string)element.Attribute("Name");
AdminUsers.Add(adminUser);
}
} /// <summary>
/// 保存配置。
/// </summary>
public static void SaveConfig()
{
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("AdminConfig",
from adminUser in AdminUsers
select new XElement("AdminUser",
new XAttribute("Id", adminUser.Id),
new XAttribute("Name", adminUser.Name)))); doc.Save(ConfigFilePath);
}
#endregion
} public sealed class AdminUser
{
public string Id { get; set; }
public string Name { get; set; }
}

2.使用实例

 static void Main(string[] args)
{
#region 1.0 加载配置
//这段代码一般放在程序的启动入库处,比如web项目的Global.asax.cs文件的Application_Start()方法里
AdminConfigManager.ConfigFilePath = @"../../AdminUserConfig.xml";//配置xml文件路径
AdminConfigManager.LoadConfig();//加载文件
#endregion IList<AdminUser> andminUsers = AdminConfigManager.AdminUsers; #region 2.0 新增
AdminUser addAdminUser = new AdminUser();
addAdminUser.Id = "RJ";
addAdminUser.Name = "任静";
AdminConfigManager.AdminUsers.Add(addAdminUser);
AdminConfigManager.SaveConfig();
#endregion #region 3.0 删除
//AdminUser deleteAdminUser = AdminConfigManager.AdminUsers.Where(u => u.Id == "RJ").First();
//AdminConfigManager.AdminUsers.Remove(deleteAdminUser);
//AdminConfigManager.SaveConfig();
#endregion Console.ReadKey();
}

 3.xml文件效果实例

系统配置文件的加载设置-以xml文件为例的更多相关文章

  1. 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  2. tomcat 加载顺序 web.xml文件详解

    一. 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Se ...

  3. Cordova 项目 加载不出XML文件

    解决方法:copy bundle 将文件移除再添加

  4. 监听器如何获取Spring配置文件(加载生成Spring容器)

    Spring容器是生成Bean的工厂,我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个 ...

  5. web.xml中如何设置配置文件的加载路径

    web应用程序通过Tomcat等容器启动时,会首先加载web.xml文件,通常我们工程中的各种配置文件,如日志.数据库.spring的文件等都在此时被加载,下面是两种常用的配置文件加载路径,即配置文件 ...

  6. Winform中设置DevExpress的RadioGroup的items从配置文件中加载

    场景 DevExpress的RadioGroup的items选项如果是不确定的话,需要其从配置文件中加载. 实现 在项目目录下新建Config文件夹,文件夹下新建xml配置文件. <?xml v ...

  7. 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

    前言 有的时候,配置信息是我们无法在开发过程中就能确定的.比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等.这时候,就需要把配置文件放在外面,让用户自定义配置部 ...

  8. 从源码来理解slf4j的绑定,以及logback对配置文件的加载

    项目中的日志系统使用的是slf4j + logback.slf4j作为一个简单日志门面,为各种loging APIs(像java.util.logging, logback, log4j)提供一个简单 ...

  9. 从SpringBoot源码分析 配置文件的加载原理和优先级

    本文从SpringBoot源码分析 配置文件的加载原理和配置文件的优先级     跟入源码之前,先提一个问题:   SpringBoot 既可以加载指定目录下的配置文件获取配置项,也可以通过启动参数( ...

随机推荐

  1. contentEditable属性设置是否可编辑元素的内容

    在HTML5中在标签新添加了一个属性contentEditable可以设置标签内的内容是否可以编辑: 设置contenteditable="true"标签内的元素(内容)可以编辑 ...

  2. 学习ASP.NET MVC(五)——我的第一个ASP.NET MVC CURD页面

    在上一篇文章中我们已经创建了实体类,在这一篇文章中,我将创建一个新的控制器类——BookController,使用BookController对Books表中的数据进行CURD操作的方法,并使用视图模 ...

  3. python2与python3在windows下共存

    python有python2(工业版)和python3,有时候我们会希望电脑上既有python2也有python3,!假设我们已经安装好,python2和python3了, 接下来我们找到python ...

  4. 谈谈java的运行机制

    1.高级语言的运行机制 我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的 ...

  5. SQL PASS将于8月24日在北京中医药大学举办线下活动

    活动主题:复制架构的实现和调优以及SQL Server BI在传统行业的应用 地点:北三环东路11号 北京中医药大学 白色的1号楼教学楼后楼5层511房间 时间:2013年8月24日 9:00-12: ...

  6. c++中关于初始化型参列表的一些问题

    /* 1.成员是按照他们在类中出现的顺序进行初始化的,而不是按照他们在初始化列表出现的顺序初始化的! 一个好的习惯是,按照成员定义的顺序进行初始化. 2.数组成员在初始化型参列表中不正确 */ #in ...

  7. 总结整理 -- 爬虫技术(C#版)

    爬虫技术学习总结 爬虫技术 -- 基础学习(一)HTML规范化(附特殊字符编码表) 爬虫技术 -- 基本学习(二)爬虫基本认知 爬虫技术 -- 基础学习(三)理解URL和URI的联系与区别 爬虫技术 ...

  8. Deep learning:四十二(Denoise Autoencoder简单理解)

    前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Be ...

  9. 优秀工具推荐:超实用的 CSS 库,样板和框架

    当启动一个新的项目,使用 CSS 框架或样板,可以帮助您节省大量的时间.在这篇文章中,我编译整理了我最喜欢的 CSS 样板,框架和库,帮助你在建立网站或应用程序时更加高效. 您可能感兴趣的相关文章 精 ...

  10. WPF The Hard Way

    WPF The Hard Way Windows Presentation Foundation (WPF) 是微软下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序.  ...