2013-07-19 112 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