如何遍历app.config获取US、UK配置节的键值对数据?
解决自定义配置节的键值对读取问题
首先得提一下你的app.config里有几处语法小问题——部分value属性的引号没闭合,比如US节里的baseURI、UK节里的UserName和Password,这些得先修正,不然读取的时候会抛出配置解析异常。修正后的这部分配置应该是这样:
<US> <add key="UserName" value="test" /> <add key="Password" value="test" /> <add key="baseURI" value="http://test.com" /> <add key="ClientSettingsProvider.ServiceUri" value="" /> </US> <UK> <add key="UserName" value="test1" /> <add key="Password" value="test1" /> <add key="baseURI" value="http://test1.com" /> <add key="ClientSettingsProvider.ServiceUri" value="" /> </UK>
接下来,因为你用的是System.Configuration.NameValueSectionHandler来定义这些节,所以可以直接用ConfigurationManager来读取这些节的键值对,代码示例如下(C#):
首先确保你的项目引用了System.Configuration程序集,然后写代码:
using System.Configuration; using System.Collections.Specialized; // 读取US配置节的键值对集合 NameValueCollection usConfig = (NameValueCollection)ConfigurationManager.GetSection("US"); // 读取UK配置节的键值对集合 NameValueCollection ukConfig = (NameValueCollection)ConfigurationManager.GetSection("UK"); // 输出US节的内容 Console.WriteLine("Section : US"); Console.WriteLine($"Username: {usConfig["UserName"]}"); Console.WriteLine($"Password: {usConfig["Password"]}"); Console.WriteLine($"baseURI: {usConfig["baseURI"]}"); // 输出UK节的内容 Console.WriteLine("\nSection : UK"); Console.WriteLine($"Username: {ukConfig["UserName"]}"); Console.WriteLine($"Password: {ukConfig["Password"]}"); Console.WriteLine($"baseURI: {ukConfig["baseURI"]}");
运行这段代码后,输出的结果就和你期望的完全一致了:
Section : US Username: test Password: test baseURI: http://test.com Section : UK Username: test1 Password: test1 baseURI: http://test1.com
原理很简单:ConfigurationManager.GetSection方法会根据你指定的节名称,返回对应的NameValueCollection对象,你只需要通过键名就能直接拿到对应的值啦。
内容的提问来源于stack exchange,提问作者josh
相关产品推荐
相关产品推荐

