2016-09-20 80 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和密码 –