2

首先,我不确定解决此问题的最佳方法是什么,但这是我的场景,我有大量帐户需要在测试套件中读取。我打算将它们以 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 类

4

1 回答 1

4

试试这个:

使用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 垫转储上

在此处输入图像描述

于 2013-05-30T01:13:50.960 回答