2016-09-20 115 views
-1

所以,我試圖使用xml進行登錄表單。我有XML文件,其中有一些數據,如ID和密碼,我想用它們進行登錄。這裏是我的代碼使用xml進行登錄

XmlDocument doc = new XmlDocument(); 
string filename = @"D:\Poriecte Visual\INFO2017\INFO2017\bin\Debug\XMLFile1.xml"; 
doc.Load(filename); 

var Username = ""; 
var Password = ""; 

foreach (XmlNode node in doc.SelectNodes("Persoane")) 
{ 
    Username = node.SelectSingleNode("ID").InnerText; (*) 
    Password = node.SelectSingleNode("Password").InnerText; 

    if (Username.Equals(textBox3.Text) && Password.Equals(textBox4.Text)) 
    { 
     Form a = new Form4(); 
     a.Show(); 
     this.Hide(); 
    } 
    else 
    { 
     MessageBox.Show("something is wrong"); 
    } 

並在(*)行我得到此錯誤:對象引用未設置爲對象的實例。

謝謝你的任何形式的幫助^^ 順便說一句,我還在用C#初學者,所以不要,如果代碼是不好判斷我^^

<?xml version="1.0" encoding="utf-8"?> 
<Persoane> 
    <Angajat> 
    <Nume_Prenume>Horatiu Necula</Nume_Prenume> 
    <ID>horatiu</ID> 
    <Parola>123</Parola> 
    <Nr_de_telefon>0723626741</Nr_de_telefon> 
    <Adresa>Valenii de munte ,PH</Adresa> 
    </Angajat> 
</Persoane> 

後來編輯:更多的日期:

<?xml version="1.0" encoding="utf-8"?> 
    <Persoane> 
     <Angajat> 
     <Nume_Prenume>horatiu</Nume_Prenume> 
     <ID>id1< /ID> 
     <Password>123< /Password> 
     <Nr_de_telefon>1</Nr_de_telefon> 
     <Adresa>1</Adresa> 
     </Angajat> 
    <Angajat> 
     <Nume_Prenume>a</Nume_Prenume> 
     <ID>id2</ID> 
     <Password>1234</Password> 
     <Nr_de_telefon>1</Nr_de_telefon> 
     <Adresa>1</Adresa> 
    </Angajat> 
    <Angajat> 
    <Nume_Prenume>2</Nume_Prenume> 
    <ID>id3</ID> 
    <Password>12345</Password> 
    <Nr_de_telefon>a</Nr_de_telefon> 
    <Adresa>a</Adresa> 
    </Angajat> 
</Persoane> 
+2

錯誤消息意味着'node.SelectSingleNode( 「ID」)''返回null'。這意味着它無法在xml中找到「ID」節點。 XML文件的內容是什麼? – Peter

+1

也查找如何使用'.SelectNodes()'的語法,看起來就像乍看之下需要使用'/ YourNode/Persone /'..請向我們展示xml文件,所以我不會在我的評論中假設任何東西 – MethodMan

+1

請仔細閱讀http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it –

回答

1

評論無誤。我修改了答案:

的「ID」節點是不正確下方的「Persoane」節點。你可能想看看XPath語法:https://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx

你的情況,它需要

Username = node.SelectSingleNode(".//ID").InnerText; 
Password = node.SelectSingleNode(".//Password").InnerText; 
+0

請注意,「//ID「(所有具有此名稱的節點都是從根開始的)完全是錯誤的建議,基於目標在XML中具有用戶列表。 –

+0

邊注:請看看這個META文章關於鏈接到W3Schools的-http://meta.stackoverflow.com/questions/280478/why-not-w3schools-com –

+0

@AlexeiLevenkov是正確的,它僅適用於我的第一個ID和密碼 –