【问题标题】:Loading and retrieving key/value pairs from XML config file从 XML 配置文件加载和检索键/值对
【发布时间】:2014-01-23 22:12:05
【问题描述】:

我希望能够使用 C# .NET 从 XML 配置文件中包含的键/值对中获取值。

例如

<add key="ConnectionString" value="whatever"/>

我在这里回答我自己的问题,但我有兴趣查看从 XML 的键/值对加载和检索值的替代选项 - 也许有更简单或更简洁的方法?

【问题讨论】:

  • 你没听说过System.Configuration命名空间和ConfigurationManager类吗?
  • 您想获得Self-Learner 徽章吗? :-)
  • @RuiJarimba 没听说过,但很好学 :)
  • @BrianWarshaw,我之前尝试过使用它,但我真的不知道如何使用它。也许你能启发我? (以及遇到此问题的任何其他人)。
  • 从配置文件中读取已经asked and answered多次...

标签: c# .net xml


【解决方案1】:

ConfigurationManager 提供对客户端应用程序配置文件的访问。 您可以使用创建自定义部分和使用GetSection 方法来获取键/值对

<MyDictionary>
        <add key="JoinG." value="Gabriel.Boltniew@xxxx.com"/>
        <add key="Brancheau S." value="Steve.sd@xxxx.com"/>
        <add key="Cetrulo P." value="Paul.ds@xxxx.com"/>
        <add key="Chiu J." value="ds.Chiu@xxxx.com"/>
        <add key="D'Alessio S." value="dsd.sdd@ffdf.com"/>

NameValueCollection section = (NameValueCollection)ConfigurationManager.GetSection("MyDictionary");

您可以使用ConfigurationManager.ConnectionStrings Property 声明您的连接字符串,它会获取当前应用程序默认配置的ConnectionStringsSection 数据。 您可以访问您的连接字符串

string conStr = Convert.ToString(ConfigurationManager.ConnectionStrings["connectionStringName"]);

更新

要定义自定义配置文件,请使用ExeConfigurationFileMap Class ConfigurationManager.OpenMappedExeConfiguration方法打开客户端指定的配置文件为system.Configuration.Configuration对象。

 ExeConfigurationFileMap custmConfg = new ExeConfigurationFileMap();
 custmConfg.ExeConfigFilename = @"d:\test\test.XML";
 Configuration config = ConfigurationManager.OpenMappedExeConfiguration(custmConfg, ConfigurationUserLevel.None);

NameValueCollection coll = (NameValueCollection)ConfigurationManager.GetSection("SectionName");

【讨论】:

  • ConfigurationManager 是否获取应用程序的默认配置文件?就我而言,我希望打开一个自定义 XML 配置文件,那么使用 ConfigurationManager 将如何工作?另外,我不确定 ConnectionStrings 属性是否适用于此处,因为我的连接字符串未存储在 ASP.NET 元素中,也不在我的 web.config 文件中。
  • 感谢您的更新,看起来它会很好地工作。 ConfigurationManager 是否允许对配置进行更改?如果有,是对物理文件的更改,还是仅存在于 Web 应用程序的服务器或会话实例中?
  • @CiaranGallagher BTW 好问题,我认为这个链接将为您提供更好的答案stackoverflow.com/questions/4216809/…
【解决方案2】:

获取配置文件,在我的例子中,它包含在我的 ASP.NET 服务器应用程序的根目录中:

var doc = XDocument.Load(Server.MapPath("~") + "\\MyConfigFile.config");

使用 LINQ 获取键/值对(在下面的 LINQ 查询中,我们首先寻找 'add' 元素的后代,然后寻找具有匹配 'ConnectionString' 的 'key' 属性的第一个节点,然后我们得到'value'属性的值):

var connectionString = doc.Descendants("add")
    .First(node => (string)node.Attribute("key") == "ConnectionString")
    .Attribute("value").Value;

获取方括号内指定的键的值:

var connectionString = parameters["ConnectionString"];

XDocument 类还包含用于更新和将更改保存回物理文件的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多