[英]Getting a nullreference exception while reading a xml file of a rss
try
{
rssDoc = new XmlDocument();
// Load the XML context into XmlDocument
rssDoc.Load(rssReader);
MessageBox.Show(rssDoc.ToString());
}
catch (Exception ex)
{
errorProvider1.SetError(url, "Cannot load the RSS from this url");
}
// Loop for <rss> tag in xmldocument
for (int i = 0; i < rssDoc.ChildNodes.Count; i++)
{
// If <rss> tag found
if (rssDoc.ChildNodes[i].Name == "rss")
{
// assign the <rss> tag node to nodeRSS
nodeRss = rssDoc.ChildNodes[i];
}
}
//Loop for the <channel> tag in side <rss> tag stored in nodeRss
for (int i = 0; i < nodeRss.ChildNodes.Count; i++) <<<<<<EXCEPTION
{
// <channel> node found
if (nodeRss.ChildNodes[i].Name == "channel")
{
//assign the <channel> tag to nodeChannel
nodeChannel = nodeRss.ChildNodes[i];
}
}
上面的代码对于大多数rss feed都可以正常工作,但是在进行最后一个循环时,我收到了nullrefrence异常。 我应该怎么做才能使其正常工作?
您的循环代码不在try块内。 您应该先更改此设置,然后再使用XDocument和ForEach。 还可以看看@MichaelKjörling撰写的内容。
try
{
XDocument rssDoc = new XDocument(rssReader);
foreach(var ele in rssDoc.Elemtens["rss"])
{
}
foreach(var ele in rssDoc.Elemtens["channel"])
{
}
}
catch (Exception ex)
{
errorProvider1.SetError(url, "Cannot load the RSS from this url");
}
为什么要重新发明轮子?
XmlNode nodeChannel = rssDoc.SelectSingleNode("/rss/channel");
...应该可以解决问题 (我很确定RSS只能在根rss
元素内允许单个channel
元素。否则,请查看SelectNodes()
而不是SelectSingleNode()
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.