在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>
谁能帮我解决这个问题?

在c#中从web读取和比较多个XML节点

我相信你的问题是&在这一行

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";
}

那是两个&不是一个。