在c#中从web读取和比较多个XML节点
本文关键字:XML 节点 比较 中从 web 读取 | 更新日期: 2023-09-27 18:17:29
我需要一点帮助。我在网页上有一个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>
谁能帮我解决这个问题?
我相信你的问题是&在这一行
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;
将IF改为
if ((Text1.Text == xn["Name"].InnerText) && (Text2.Text == xn["Pwd"].InnerText))
{
status.Text = "Correct";
}
那是两个&不是一个。