2011-11-14 13 views
0

変数の値を設定するif文を実行する必要があるこのコードはあります。問題は、最初の条件がnullの場合です。誰かが私が間違っていることを教えてもらえますか?C#HTMLアジリティパック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); 

     } 

答えて

0

おそらくSelectSingleNodeはnullを返しているので、GetAttributeValueへの呼び出しはnull参照の問題です。属性を確認する前に、SelectSingleNodeの結果を確認する必要があります。

+0

Duh!ありがとう。 – Reg