将 App.Config 数据解析为对象列表
Posted
技术标签:
【中文标题】将 App.Config 数据解析为对象列表【英文标题】:Parsing App.Config data to a list of objects 【发布时间】:2013-05-25 10:33:22 【问题描述】:首先,我不确定解决此问题的最佳方法是什么,但这是我的场景,我有大量帐户需要在测试套件中读取。我打算将它们以 xml 格式存储在 app.config 文件中,并以这种方式读取帐户。这是最好的方法吗?我应该改用 JSON 吗? 无论如何,我在这里尝试过这种方法:
http://www.codeproject.com/Articles/6730/Custom-Objects-From-the-App-Config-file
虽然我用ConfigurationManager.GetSection()
;而不是ConfigurationSettings.GetConfig()
,因为它已被弃用。但是,我必须下载一个自定义的 ConfigSectionHandler,在尝试使用时总是遇到空指针异常。
我要解析的 xml 格式为:
<testConfig>
<accounts>
<account>
<name>foo</name>
<password>bar</password>
<description/>cool account</description>
</account>
<account>
<name>bar</name>
<password>foo</password>
<description/>uncool account</description>
</account>
</accounts>
</testConfig>
如果我能把它解析成一个 Account 对象列表就好了,我已经定义了 Account 类
【问题讨论】:
您是否考虑过将其存储在单独的 XML 文件中,然后使用 LINQ to SQL 访问它? 【参考方案1】:试试这个:
使用var xDoc = XDocument.Parse(xmlString);
如果您要将XML 加载到字符串并将其放入XDocument。但是,您可以直接使用var xDoc = XDocument.Load(@"XMLPathGoesHere");
直接加载xml。
示例帐户对象:
public class Account
public string Name get; set;
public string Password get; set;
public string Description get; set;
然后使用下面的 LINQ 查询:
var accounts = (from xElem in xDoc.Descendants("account")
select new Account()
Name = xElem.Element("name").Value ?? string.Empty,
Password = xElem.Element("password").Value ?? string.Empty,
Description = xElem.Element("description").Value ?? string.Empty
).ToList();
还请记下您的 XML 部分,<description/>uncool account</description>
。我猜这部分应该是<description>uncool account</description>
。
我的 LINQ 垫转储结果
【讨论】:
以上是关于将 App.Config 数据解析为对象列表的主要内容,如果未能解决你的问题,请参考以下文章