我目前正在使用代码
string[] toSearch = { "title", "link", "description" };
string url = "http://www.ebay.co.uk/sch/i.html?_sacat=0&_from=R40&_nkw=" + itemToSearch.Replace(" ", "+") + "&_sop=15&_rss=1";
WebRequest request = WebRequest.Create(url);
WebResponse responce = request.GetResponse();
Stream rssStream = responce.GetResponseStream();
XmlDocument rssDocument = new XmlDocument();
rssDocument.Load(rssStream);
XmlNodeList rssItems = rssDocument.SelectNodes("channel/item");
int xMax = toSearch.Length;
int yMax = rssItems.Count;
String[,] tempRssData = new String[yMax + 1, xMax];
for (int i = 0; i < rssItems.Count; ++i)
{
XmlNode rssNode = null;
for (int ii = 0; ii < toSearch.Length; ++ii)
{
rssNode = rssItems.Item(i).SelectSingleNode(toSearch[ii]);
if (rssNode != null)
{
tempRssData[i, ii] = rssNode.InnerText;
}
else
{
tempRssData[i, ii] = "";
}
}
}
但rssItems.Count = 0,有谁知道原因。 我正在使用的rss feed的例子是 http://www.ebay.co.uk/sch/i.html?_sacat=0&_from=R40&_nkw=raspberry+pi&_sop=15&_rss=1
答案 0 :(得分:4)
你的XPath错了。
我建议您通过检查XPath spec并在线查看教程来学习如何正确使用XPath。
要解决此问题,您需要更改:
XmlNodeList rssItems = rssDocument.SelectNodes("channel/item");
为:
XmlNodeList rssItems = rssDocument.SelectNodes("//channel/item");
您还可以在Chrome中本机执行XPath查询。在Chrome中打开RSS Feed页面,打开开发人员工具,打开控制台并输入:
$x("expression")
所以它变成了:
$x("channel/item")
你应该注意到,什么都不返回。