2017-08-03 52 views
-1

私が作成したプログラムは、Webサイトから情報を読み込んで保存する必要があります。エラーが発生しています:c#System.ArgumentNullException:値をnullにすることはできません。パラメータ名:source

System.ArgumentNullException: Value cannot be null.
Parameter name: source
at System.Linq.Enumerable.Select[TSource,TResult](IEnumerable 1 source, Func 2 selector)

ただし、必ずしも間違って実行されるとは限りません。時にはそれはうまくいくので時にはうまく動作しません。どうすればいいの? は、ここでは、この例外の背後にある私のエラー行を与えているコード4

IEnumerable<string> webtemp = Enumerable.Empty<string>(); 
if (datastring.Contains("today_nowcard-temp")) 
{ 
    webtemp = doc.DocumentNode.SelectNodes("//div[@class = 'today_nowcard-temp']/span").Select(d => d.InnerText.Trim()); 

    foreach (var this_header in webtemp) 
    { 
     string[] temporary = this_header.Trim().Replace("Â", "-").Replace(" ", "-").Split('-'); 
     int f = (Convert.ToInt32(temporary[0])); 
     _actualData[0].temp = GetCelsius(f); 
     //Console.WriteLine(_actualData[0].temp); 
    } 
} 
+3

にこの' DocumentNode.SelectNodes( "// divの[@class = 'today_nowcard-TEMP'] /スパン")はnullチェックを実行することができ、ヌルを返しますが、あなたが持っているものを見ずに'doc'では、なぜxpathが結果を返さないのかを言うことは不可能です。 – rene

+0

これはときどき結果を返し、xpathが変更されないことを伝えることができます。 –

+0

私はあなたの文書のxmlが@reneが取得していることを確認する必要があります。 – GibralterTop

答えて

2

理由は、あなたのSelectNodesメソッドによって返される値です。ときどきnullを返し、nullでLinq演算を実行しようとするとエラーが発生します。だから、 `この

var temp= doc.DocumentNode.SelectNodes("//div[@class = 'today_nowcard-temp']/span"); 

if(temp != null){ 
//TODO 
} 
関連する問題