我需要一些帮助。我在网络上有一个XML文件,我用以下文件调用该文件:
String URLString = "http://myweb.tld/myfile.xml";
var xmlDocument = new XmlDocument { XmlResolver = null };
xmlDocument.Load(URLString);
读者工作,没有错误。
现在我想读取XML中的一些标签,所以我使用:
XmlNodeList xnCheck = xmlDocument.SelectNodes("/blab/bla");
foreach (XmlNode xn in xnCheck)
if ((Text1.Text == xn["Name"].InnerText) & (Text2.Text == xn["Pwd"].InnerText))
{
status.Text = "Correct";
}
else status.Text = "Wrong data";
break;
}
当我尝试阅读时,我总是得到“错误的数据”,我不明白为什么。
这是XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<blap>
<bla>
<Name>name1</Name>
<Pwd>12345678</Pwd>
</bla>
<bla>
<Name>name2</Name>
<Pwd>87654321</Pwd>
</bla>
</blap>
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
我相信你的问题是&amp;在这一行
if ((Text1.Text == xn["Name"].InnerText) & (Text2.Text == xn["Pwd"].InnerText))
你应该能够解决问题:
if ((Text1.Text == xn["Name"].InnerText) && (Text2.Text == xn["Pwd"].InnerText))
您也在选择错误的节点。以下内容:
.SelectNodes("/blab/bla")
应该是:
.SelectNodes("/blap/bla")
还有一件事:
一旦找到正确的匹配,您应该突破循环,并且您应该只更新状态一次。以下是如何重写循环:
string sStatus = "Wrong data";
foreach (XmlNode xn in xnCheck)
{
if ((Text1.Text == xn["Name"].InnerText) && (Text2.Text == xn["Pwd"].InnerText))
{
sStatus = "Correct";
break;
}
}
status.Text = sStatus;
答案 1 :(得分:1)
将IF更改为
if ((Text1.Text == xn["Name"].InnerText) && (Text2.Text == xn["Pwd"].InnerText))
{
status.Text = "Correct";
}
这是两个而不仅仅是一个。