2013-07-05 95 views
2

我目前使用的代碼RSS訂閱易趣C#

 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

+3

可能你的XPath值是錯誤的。表示「channel/item」的位。通過調試器一步步,並確認你的'url'是正確的 – musefan

回答

4

您的XPath錯誤。

我建議您通過檢查XPath spec並在線查看教程來了解如何正確使用XPath。

要解決此問題,您需要更改:

XmlNodeList rssItems = rssDocument.SelectNodes("channel/item"); 

到:

XmlNodeList rssItems = rssDocument.SelectNodes("//channel/item"); 

你也可以執行本身在Chrome XPath查詢。在Chrome中打開你的RSS源,打開開發人員工具,打開控制檯,輸入:

$x("expression") 

,使其成爲:

$x("channel/item") 

其中,你應該注意到,沒有返回。

+0

謝謝,這解決了問題 – user2279389