首页 > 代码库 > 关于配置文件权衡,.config VS .xml

关于配置文件权衡,.config VS .xml

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

 

当然,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", "1"),            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