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

时间:2011-12-10 01:34:05

标签: c# xml

我需要一些帮助。我在网络上有一个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>

有人可以帮我解决这个问题吗?

2 个答案:

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

这是两个而不仅仅是一个。