众所周知,程序的灵活性有一部分就是“配”出来了。

当然,config文件从来就没有让.NET的同学轻松过,至少,我觉得很麻烦。

1.config

.NET的配置文件方便,其实最方便的是appSettings

<appSettings>
<add key="apiKey" value = "8asdf9as9d2asd" />
</appSettings>

而自定义配置比较繁琐,要熟悉.NET的配置文件体系,才能了然于胸。

当然,奉献精神的人们提供了一个DSL杰作——ConfigurationSectionDesigner。

从某种程度上来说,我对.NET的自定义配置是矛盾的:

我喜欢它,因为严格,不可修改;

我不喜欢它,往往修改设计的时候,就比较麻烦,要该好多引用。

2.XML

XML很灵活,但我又惧怕其复杂的API,截止到使用Linq To Xml之前,我都一直抱着这种态度。

甚至多次想写一个XMLHelper,结果每次看到一堆的定义和API,就傻了。

这里,是Linq To Xml让我改变了对XML的态度。

主要API:

1)加载一个文档;

XDocument  doc = XDocument .Load(path);
或
XElement doc = XElement .Load(path);

区别就是,XElement加载之后,当做一个元素;而XDocument(当做一个文档)有一个典型的属性——Root。

2)查找元素;

提供了良好的树形API,给人很清晰的感觉。

doc.Elements("yourName") ;    //查找元素集合
doc.Element("yourName") ; //查找单个元素 doc.Descendants("yourName"); //查找子孙元素

当然,后面加上Linq的扩展,Where,Select等Lambda方式,是很自然的事情。

3)修改元素,增加元素,删除元素;

SetValue,Add,AddAfterSelf,AddBeforeSelf

RemoveAll

XElement root = new XElement("Categories",
new XElement("Category",
new XAttribute("CategoryID", ""),
new XElement("CategoryName", "Beverages"),
new XElement("Description", "Soft drinks, coffees, teas, beers, and ales")
)
);
root.Element("Category").Add(new XAttribute("AddDate", DateTime.Now.ToShortDateString()));
root.Save(path);

xml文件的读写是如此地方便。

3.选择

总体上来说,XML比config文件更加灵活。

在config应对各种复杂配置无力(修改代码很无奈)时,我倾向于使用XML进行配置;

在配置很固定时,很简单时,我很倾向使用config进行配置。

使用XML文件时,有个VS小提示——选中XML文件,右键,属性,输出目录,选择“始终复制”。

关于配置文件权衡,.config VS .xml的更多相关文章

  1. Spring配置文件详解 - applicationContext.xml文件路径

    spring的配置文件applicationContext.xml的默认地址在WEB-INF下,只要在web.xml中加入代码 org.springframework.web.context.Cont ...

  2. Spring配置文件详解 – applicationContext.xml文件路径

    Spring配置文件详解 – applicationContext.xml文件路径 Java编程                 spring的配置文件applicationContext.xml的默 ...

  3. 配置文件App.config的使用以及Readonly与Const的对比

    以前我们学习的时候都把连接数据库的连接字符串写在一个类中,因为我们的数据库都在自己电脑上.如果更换数据库地址,需要更改这个类,然后重新编译才可以连接到数据库.现在我们需要将连接字符串当道一个文件中,然 ...

  4. C#的配置文件App.config使用总结 - 转

    http://blog.csdn.net/celte/article/details/9749389 首先,先说明,我使用的app.config 配置文件的格式如下: <?xml version ...

  5. IOC容器Unity的使用及独立配置文件Unity.Config

    [本段摘录自:IOC容器Unity 使用http://blog.csdn.net/gdjlc/article/details/8695266] 面向接口实现有很多好处,可以提供不同灵活的子类实现,增加 ...

  6. winform程序读取和改写配置文件App.config元素的值

    winform程序读取和改写配置文件App.config元素的值 2016-05-16 17:49 by newbirth, 2412 阅读, 0 评论, 收藏, 编辑 1 2 3 4 5 6 7 & ...

  7. C#的配置文件App.config使用总结

    应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是configuration. ...

  8. C#读取配置文件app.config

    应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是configuration. ...

  9. ASP.NET配置文件machine.config与性能[转]

    转 http://www.cnblogs.com/chenlulouis/archive/2010/05/26/1744261.html http://www.cnblogs.com/zhangron ...

  10. 配置文件——App.config文件读取和修改

    作为普通的xml文件读取的话,首先就要知道怎么寻找文件的路径.我们知道一般配置文件就在跟可执行exe文件在同一目录下,且仅仅在名称后面添加了一个.config 因此,可以用Application.Ex ...

随机推荐

  1. 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(二)

    DEMO1:当我们点击启动服务时和点击停止服务的时候,观察服务的运行状态,布局由于简单,只是两个普通的Button按钮,在此我只上截图. java代码部分 第一步:我们需要实现一个服务类,继承自ser ...

  2. 他们在军训,我在搞 OI(二)

    Day 2 7:26 2016/8/25 新的一天又开始了! 走在上学的路上,抬头看看北京少有的蓝天,太阳的威力不再那么明显,甚至输给了挡住它的云朵.迎面吹来了凉爽的风,夏天的燥热,早已无影无踪. 许 ...

  3. Resources in Visual Tracking(转载)

    这位博主总结了比较新的tracking方面的资源:http://blog.csdn.net/minstyrain/article/details/38640541 http://xilinx.eetr ...

  4. 暑假热身 A. GCC

    GCC编译器是一个由GNU项目维护的编译系统,它支持多种编程语言的编译.但是它并不包含数学运算符“!”.在数学中,这个符号代表阶乘.表达式n!的意思是从1到n的所有整数的乘积. 例如,4!=4*3*2 ...

  5. python - PyQuery

    偶尔的机会,知道这么个扩展,手贱翻了下文档,发现似乎挺有意思,遂记录一二. what: 这是一个python版本的jquery,而且是后端执行的,至少官方是这么说的: pyquery allows y ...

  6. 【ERROR】使用jquery的ajax出现error:readyState=4,status=500

    使用jquery的ajax出现error:readyState=4,status=500,ajax代码如下: $.ajax({ url : "../toBeFinMisManage/show ...

  7. MySQL关闭过程详解和安全关闭MySQL的方法

    MySQL关闭过程详解和安全关闭MySQL的方法 www.hongkevip.com 时间: -- : 阅读: 整理: 红客VIP 分享到: 红客VIP(http://www.hongkevip.co ...

  8. simple_html_dom使用小结

    simple_html_dom使用小结 分类: PHP2012-08-31 14:24 3094人阅读 评论(0) 收藏 举报 htmlcallbackstringdivfunctionfile  1 ...

  9. 右移>> 和 左移<<

    一个int占四个字节,也就是32位,这样的话1不论左移还是右移32位仍旧移到原来的位置,就仍旧是1了. 右移是除,左移是乘.1除1除32次和1乘1乘32次当然都还是1了. 移位操作的简单计算方法 &g ...

  10. 高阶函数复习:利用reduce和map把字符串转为数字

    复习高阶函数的时候,有一道题想了半天解不出来.看了下别人的解法,发现学习编程,思维真的很重要. 习题: 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数1 ...