我有一个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
));
}
答案 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(字符串))