C # HTML Agility Pack с оператором IF - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть этот код, который мне нужен для запуска оператора if, чтобы установить значение переменной.Проблема в том, что когда первое условие равно нулю, оно не выполняется.Может кто-нибудь сказать мне, что я делаю не так?

Оператор IF находится внутри цикла foreach, который добавляет значение в список на каждой итерации.

Большое спасибо!

 string result = string.Empty;

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "GET";

        using (var stream = request.GetResponse().GetResponseStream())
        using (var reader = new StreamReader(stream, Encoding.UTF8))
        {
            result = reader.ReadToEnd();
        }

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.Load(new StringReader(result));
        HtmlNode root = doc.DocumentNode;

        string itemdesc = doc.DocumentNode.SelectSingleNode("//h1[@class='producttitle']").InnerText;

        HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class='resultsset']/table/tbody[@class='result']/tr");

        List<string> sellers = new List<string>();
        List<string> prices = new List<string>();

        foreach (HtmlNode node in nodes)
        {
            string seller = string.Empty;
                if(node.SelectSingleNode(".//ul[@class='sellerInformation']/img").GetAttributeValue("alt", string.Empty) != null)
                {
                    seller = node.SelectSingleNode(".//ul[@class='sellerInformation']/img").GetAttributeValue("alt", string.Empty);
                }

                else if (node.SelectSingleNode(".//ul[@class='sellerInformation']/a/img").GetAttributeValue("alt", string.Empty) != null)
                {
                    seller = node.SelectSingleNode(".//ul[@class='sellerInformation']/a/img").GetAttributeValue("alt", string.Empty);
                }

                else
                {
                    seller = node.SelectSingleNode(".//ul[@class='sellerInformation']/li/div/span/a/b").InnerText;
                }


            sellers.Add(seller);
            string price = node.SelectSingleNode(".//span[@class='price']").InnerText;
            prices.Add(price);

        }

1 Ответ

0 голосов
/ 14 ноября 2011

Вероятно, SelectSingleNode возвращает ноль, поэтому вызов GetAttributeValue является пустой ссылкой. Вам нужно будет проверить результат SelectSingleNode перед проверкой атрибута.

...