`
coconut_zhang
  • 浏览: 543718 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

关于配置文件的读取

阅读更多

在1.0/1.1版本,都流行的是appSettings这个节点读取;无论web.config,还是app.exe.config都可以使用这个节点配置。

如:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
  <add key="TestKey" value="(local)"/>
  <add key="WoniuguDBName" value="woniugu_test"/>
    </appSettings>
    <!--还有其他的-->
</configuration>

在代码中读取:
string 内容 = ConfigurationSettings.AppSettings[key];

这种方式,简洁;

还有一种:自定义配置节

举例说明:
<configuration>
    <configSections>
        <section name="sampleSection"
                 type="System.Configuration.SingleTagSectionHandler" />
    </configSections>

    <sampleSection setting1="Value1" setting2="value two"
                   setting3="third value" />
</configuration>

代码中读取:ConfigurationSettings.GetConfig("sampleSection");其返回的对象强制转换为 IDictionary 对象

IDictionary sampleTable = (IDictionary) ConfigurationSettings.GetConfig("sampleSection");
string value1 = (string)sampleTable["setting1"];
string value2 = (string)sampleTable["setting2"];
string value3 = (string)sampleTable["setting3"];

+++++++++++++++

在2.0版本,web.config还是流行appSettings来配置,但app.exe.config采用了Section节点配置。读取类也发生了改变。

在代码中读取:
string 内容 = ConfigurationManager.AppSettings[key];

后面,我简单测试了下,在app.exe.config中还是可以手工添加appSettings来配置。同样用上面的代码来访问,没有问题。

这里,我阅读了一篇文章.Net 自定义应用程序配置,http://www.tracefact.net/CLR-and-Framework/Custom-Application-Configuration.aspx

不错,上面很好讲解。

在此,我只贴我自己分析后写出的部分代码,用来显示如何提取,当然和《.Net 自定义应用程序配置》的内容不一样:
配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0,

Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="SetConfig.Properties.Settings" type="System.Configuration.ClientSettingsSection, System,

Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser"

requirePermission="false" />
        </sectionGroup>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System,

Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="SetConfig.Properties.Settings" type="System.Configuration.ClientSettingsSection, System,

Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <SetConfig.Properties.Settings>
            <setting name="userSetting1" serializeAs="String">
  <value>user</value>
     </setting>
        </SetConfig.Properties.Settings>
    </userSettings>
    <applicationSettings>
        <SetConfig.Properties.Settings>
            <setting name="appSetting1" serializeAs="String">
                <value>application</value>
            </setting>
        </SetConfig.Properties.Settings>
    </applicationSettings>
    <appSettings>
  <add key="TestKey" value="(local)"/>
  <add key="WoniuguDBName" value="woniugu_test"/>
    </appSettings>
</configuration>

部分读取代码:
第一种,直接读取,注意上面的配置的类型System.Configuration.ClientSettingsSection
   ClientSettingsSection config = (ClientSettingsSection)
    ConfigurationManager.GetSection("userSettings/SetConfig.Properties.Settings");

   if (config == null)
    return ;

   SettingElementCollection d = config.Settings;
   if (d != null)
   foreach(SettingElement de in d)
   {
    Console.WriteLine("n={0}" ,de.Name);
    Console.WriteLine("serializeAs={0}" ,de.SerializeAs);
    Console.WriteLine("v={0}" ,de.Value.ValueXml.InnerText);
   }

第二种,读取xml内容,需要再次读取。这种方式个人不建议。

    ConfigurationSection sectionV;
  
    // Get the current configuration file.
    System.Configuration.Configuration config =
     ConfigurationManager.OpenExeConfiguration(
     ConfigurationUserLevel.None) as Configuration;
  
    sectionV =
     config.GetSection("userSettings/SetConfig.Properties.Settings") as

ConfigurationSection ;
    
    Console.WriteLine("Section name: {0},raw:{1}",
     sectionV.SectionInformation.Name ,sectionV.SectionInformation.GetRawXml() );

关于自己写的这两类读取,本人赞同第一种,方便,直接获取节点值;第二种就在于再次分析xml,也许直接呈现是有用的。

而《.Net 自定义应用程序配置》所写的,也是好东西。建议使用。

总结:

关于自己写的这两类读取,本人赞同第一种,方便,直接获取节点值;

建议的另一点:还是appSettings读取。

最后说明一点:
无论哪类读取,目的都是为了获取配置;从根本上来说:就是xml的操作。这一点才是根本的。

喜欢用appSettings还是用它吧,简单方便。

至于2.0推荐的方式(msdn)也是好用,让用户自己继承接口,自己写读取,实用,只是代码多了点哦,呵呵

分享到:
评论

相关推荐

    Spring Boot多模块配置文件读取

    总之,Spring Boot的多模块配置文件读取策略旨在提高项目的可扩展性和可维护性。通过合理的配置文件组织和使用`@ConfigurationProperties`,我们可以有效地管理各模块的配置,同时保持代码的清晰和整洁。理解并熟练...

    保存INI配置文件和读取配置文件

    INI 配置文件的保存和读取 INI 配置文件是一种常见的文件格式,用于存储程序的配置信息。它是一种简单的持久化机制,允许程序在启动时初始化配置信息。INI 文件由多个节(Section)组成,每个节中可以有多个键名...

    C++配置文件读取

    配置文件读取是C++应用程序中的常见任务,通过理解基本的文件I/O操作和可能涉及的库,开发者可以灵活地处理各种格式的配置文件。在Visual C++ 2010环境下,这个过程更加便捷,因为它提供了良好的集成开发环境和支持...

    LabVIEW 写入与读取配置文件

    在LabVIEW中,配置文件是用于存储应用程序设置、参数或状态的关键元素。这些文件通常以.ini或.xml格式存在,允许程序在运行时根据这些配置进行自定义行为。本教程将深入探讨如何在LabVIEW中进行配置文件的写入与读取...

    config_ini配置文件读取_

    在本案例中,我们将讨论如何使用Qt库在界面上进行`config_ini`配置文件的读取和写入操作。 Qt是一个跨平台的C++图形用户界面应用程序开发框架,提供了丰富的API用于处理文件I/O和GUI构建。对于`config.ini`文件的...

    c# 通过配置文件读取数据库连接字符创,读取配置文件值

    本篇文章将深入探讨如何使用C#通过配置文件读取数据库连接字符串和其他配置值,以及这样做的好处。 首先,我们需要了解C#中的配置文件通常是基于`.config`格式的,如`app.config`或`web.config`,它们存储了应用的...

    C# winform 读取修改配置文件

    本文将详细讲解如何在Winform中读取和修改配置文件,特别是`appSettings`部分,这对于大多数桌面应用来说是至关重要的功能。 配置文件在.NET Framework中通常以`.config`为扩展名,例如`app.config`或`web.config`...

    java读取配置文件

    Java NIO(New IO)提供了非阻塞的I/O操作,可以更高效地处理文件读取: ```java Path path = Paths.get("config.properties"); Properties props = new Properties(); try (InputStream in = Files....

    封装读取配置文件

    1. **提高代码可维护性**:通过封装,可以统一处理文件读取逻辑,避免代码重复,使后续的维护和升级更加容易。 2. **增强安全性**:封装可以添加异常处理机制,确保在文件不存在或格式错误时,程序能够优雅地处理...

    C++读取配置文件

    在C++编程中,读取配置文件是一项常见...通过上述步骤,你可以在C++项目中创建一个灵活的配置文件读取系统,为你的程序提供可配置性,同时避免了重复编写解析代码的麻烦。记得在实际项目中根据需求进行适当扩展和优化。

    基于Qt的读取配置文件

    读取XXX.ini配置文件里面数据信息 1.在使用中把CIniFile类添加到项目当中,并在使用的类引用CIniFile类 2.m_iniFile = new CIniFile(QCoreApplication::applicationDirPath()+ MoonlightService); [MoonlightService...

    C#读取配置文件详解教程

    C# 读取配置文件详解教程 配置文件是 C# 中的一个重要概念,它允许开发人员存储和读取应用程序的配置信息。配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。开发人员可以使用配置文件来更改设置,而不必...

    配置文本文件读取封装

    对于配置文件读取,封装意味着创建一个类,它负责打开文件、逐行读取、解析逗号分隔的值,并可能提供方法来获取或设置配置项。 6. **具体实现**:在`QueueTextFile`类中,可能会有一个构造函数接收文件路径作为参数...

    读取配置文件工具类.rar

    在实际开发中,为了提高代码的可复用性和灵活性,我们还可以考虑将这两个工具类整合为一个,提供通用的配置文件读取接口,通过文件扩展名或配置文件内容自动识别是`.properties`还是`.yml`格式,并进行相应的读取...

    Linux shell 脚本读取配置文件

    Linux 系统 shell脚本读取配置文件

    spring读取jar中的配置文件

    当我们的应用程序被打包成JAR文件后,有时我们需要从JAR内部读取配置文件,例如application.properties或application.yml。本文将深入探讨如何在Spring框架中实现这一功能。 首先,理解Spring的资源配置。Spring...

    JAVA高手解析XML配置文件的读取操作.pdf

    本文对 Java 中的 XML 配置文件读取操作进行了详细的讲解,并提供了一个使用 SAX 解析器读取 XML 配置文件的示例程序,对 Java 开发者来说非常实用。 知识点: 1. XML 配置文件在 Java 开发中的应用 2. DOM 和 SAX...

    java 读取配置文件

    在Java编程中,读取配置文件是常见的任务,特别是在构建可扩展和可维护的应用程序时。配置文件通常用于存储应用程序的设置、连接信息或其他敏感数据,这样可以将这些信息与核心代码分离,便于管理和更新。本篇文章将...

    配置文件读取

    本主题将深入探讨如何实现配置文件的读取,特别是针对标题中提及的示例格式。 首先,配置文件通常包含注释、键值对以及可能的分段(section)。在提供的描述中,我们可以看到两种注释形式:`#` 开头的行和 `;` 开头...

Global site tag (gtag.js) - Google Analytics