2

私は現在コードを使用しています

     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 フィードの例は、 http: //www.ebay.co.uk/sch/i.html?_sacat=0&_from=R40&_nkw=raspberry+pi&_sop=15&_rss=1 です。

4

1 に答える 1

4

XPath が間違っています。

XPath の仕様を調べ、オンラインのチュートリアルを見て、XPath を正しく使用する方法を学ぶことをお勧めします。

この問題を解決するには、次のように変更する必要があります。

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

に:

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

Chrome でネイティブに XPath クエリを実行することもできます。Chrome で RSS フィード ページを開き、開発者ツールを開き、コンソールを開いて次のように入力します。

$x("expression")

したがって、次のようになります。

$x("channel/item")

これは、何も返さないことに注意してください。

于 2013-07-05T14:14:54.833 に答える