2013-07-19 78 views
-2

我有下面的XML文件:使用LINQ到XML查询与XML

<?xml version="1.0" encoding="utf-8"?> 
<Users> 
<User> 
    <Username> Admin </Username> 
    <Password> 123 </Password> 
<User> 
</Users> 

我需要寻找的用户名的元素一个变量,当我找到它,然后我有一个比较其密码我有另一个变量,并检查它们是否匹配。

什么是好办法做以下事情?如果您需要更改XML文件的格式,只要它包含用户名/密码就没有问题。

+2

你不应该在XML文件中存储明文密码。如果你不想处理一个真正的数据库,你应该看看类似SQLite的东西。 – Guvante

+1

我正在使用MD5哈希计划我不会将密码存储为纯文本,但这不是问题,因为我已经想通了。 – Marc

+0

这是非常简单的事情,谷歌将解决 –

回答

3

您不应该以纯XML存储密码;然而,我认为这是你要找的那种比较:

var userSought = "userA"; 
var passwordSought = "1234"; 

XDocument xml = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"), 
    new XElement("Users", 
     new XElement("User", 
      new XElement("Username", "Admin"), 
      new XElement("Password", "123")), 
     new XElement("User", 
      new XElement("Username", "userA"), 
      new XElement("Password", "123")) 
     )); 

var userMatch = (from userElement in xml.Element("Users").Elements("User") 
        where userElement.Element("Username").Value == userSought 
        select new 
        { 
         Username = userElement.Element("Username").Value, 
         Password = userElement.Element("Password").Value 
        }).FirstOrDefault(); 

if(userMatch.Username == userSought && userMatch.Password == passwordSought) 
    Console.WriteLine(userSought + " matches password " + passwordSought); 
else 
    Console.WriteLine(userSought + " has password " + userMatch.Password + " but is expected to be " + passwordSought); 
+0

谢谢尼克我会在我的笔记本电脑上测试以下内容。 – Marc