2015-05-27 44 views
-2

通過從XML有問題的用戶身份驗證用戶從C#窗口登錄。使用C#從xml登錄?

並返回錯誤「Object reference not set to an instance of an object」。

近 「string userName = user["username"].InnerText;

XML文件是:

<?xml version="1.0" encoding="utf-8"?> 
<Users> 
    <user username="husye"> 
    <password>husuko</password> 
    <author>Admin</author> 
    <name>Hussein</name> 
    <mobile>0916821918</mobile> 
    </user> 
    <user username="usminuru"> 
    <password>123</password> 
    <author>Admin</author> 
    <name>Ismail</name> 
    <mobile>0910178976</mobile> 
    </user> 
</Users> 

的登錄電子表單代碼是:

if (txtUserName.Text == "" || txtPassword.Text == "") 
      { 
       MessageBox.Show("Username or Passowrd field is empty!"); 
       ClearTextBoxes(); 
      } 

      int i = 0; // we use this variable to count if ther’s a user with this name 

      XmlDocument myXml=new XmlDocument(); 

      myXml.Load(Application.StartupPath + "/AppUsers/Users.xml");    

      XmlNodeList userList = myXml.SelectNodes("Users/user"); 

      foreach(XmlNode user in userList) 

      { 

       string userName = user["username"].InnerText; 

       string userPassword = user["password"].InnerText; 

       string userAuthor = user["author"].InnerText; 

       if (userName == txtUserName.Text) 

       { 

        ++i; 

        if (userPassword == txtPassword.Text) 

        { 

         Form panel; 

         this.Opacity = 0; 

         switch(userAuthor) 

         { 

          case "Admin": 

           panel = new MainWindow(); 

           panel.Show(); 

           break; 

          case "Assistant" : 

           panel = new Report(); 

           panel.Show(); 

           break; 

         } 

        } 

        else 

        { 

         MessageBox.Show("Wrong Password!"); 
         ClearTextBoxes(); 

        } 

以前我曾嘗試只爲用戶名工作正常使用的元素值。但是這具有用戶名的屬性值。

請幫助,在此先感謝。

+1

我很抱歉,但我不明白什麼是不加工。錯誤發生在哪裏?什麼是錯誤信息?此外,以這種方式創建登錄名是非常不安全的,請查看更好的方法來執行此操作。 –

+0

你是對的,只是我編輯了我的問題。 – ensberiyu

回答

0

而不是

string userName = user["username"].InnerText; 

使用

string userName = user.Attributes["username"].Value; 

此外,重寫你的問題更可讀......

+0

這是非常有用的答案。 – ensberiyu