我无法从xml文档中获取值

时间:2015-03-08 13:54:02

标签: c# winforms linq

我有一个xml文件,如下所示

<Accounts>
  <Account Id="1">
    <UserName>xxx@Hotmail.com</UserName>
    <Password>xxx</Password>
    <AddingDate>06 Mart 2015 Cuma</AddingDate>
    <AccountType>Hotmail</AccountType>
  </Account>

类名为KeyValuePairCls,用于输入用户名和密码值。我正在尝试从xml文档中获取theese值并将其保存到下面的列表中。问题是我可以获取用户名而不是密码。我是什么意思误入歧途。

   private void AddAccounts()
        {
            List<KeyValuePairCls> _keyValue = new List<KeyValuePairCls>();
            XDocument doc = XDocument.Load("UserAccounts.xml");
            for (int i = 0; i < doc.Descendants("Account").Count(); i++)
            {

                _keyValue.Add(new KeyValuePairCls(doc.Descendants("Account").ElementAt(i).Element("UserName").Value,
               doc.Descendants("Account").ElementAt(i).Element("Password").Value
                        ));

            }

1 个答案:

答案 0 :(得分:0)

你想要的是

string p = @"<Accounts>
  <Account Id='1'>
    <UserName>xxx@Hotmail.com</UserName>
    <Password>xxx</Password>
    <AddingDate>06 Mart 2015 Cuma</AddingDate>
    <AccountType>Hotmail</AccountType>
  </Account>
</Accounts>";
//I'm parsing a string instead of loading from a file but you get the same
// object back so don't worry 
var xdoc = XDocument.Parse(p);

var x = xdoc.Root.Elements("Account").Select (r => new { UserName = (string)r.Element("UserName"), Password = (string)r.Element("Password") });

如果你只是遍历var x,你可以创建一个对象,并且如果你想要一个IEnumerable的MyObject(如果你想传递数据那么好),你可以想要一个新的MyObject,如果你想要整个元素而不仅仅是值只删除强制转换(拳击,IE(字符串))