C#/ Html Agility pack error "値はnullにはできません。パラメータ名:Source"

c#-4.0 html-agility-pack

質問

以前はhtml agility packを使っていましたが、少し試行錯誤して良い結果を出しました。私は現在、XPathを使ってノードセットを返すためにこれを使用しようとしています。これは、Firefoxで「XPathをコピー」を右クリックすることによって得られます。私はいくつかの検索をしており、ブラウザーがテーブルタグに "tbody"を追加することが多いことがわかります。私は運がないとこれを削除してそれを試してみました。 Firefoxに私に与えられたxpathは次のとおりです:

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]

これを使用すると、「 値はnullではありません。パラメータ名:ソース 」というエラーがスローされます。

これはオンラインで発生します:

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();

私はこれを読んでいきますが、その間に誰にも簡単に解決できるのであれば、ヒントをいただければ幸いです。

更新:これは実際のコードです:

protected override List<IDataPoint> ReturnDataPointsFromIndividualAddressString(string AddressString)
{
       List<IDataPoint> earningsAnnouncements = new List<IDataPoint>(); //Not used, yet..

       HtmlWeb hwObject = new HtmlWeb();
       HtmlDocument htmlDoc = hwObject.Load(AddressString);

       if (htmlDoc.DocumentNode != null)
       {
               List<HtmlNode> nodeList = new List<HtmlNode>();
               nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();
       }
}

人気のある回答

このエラーは次の行で発生しているようです:

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();

つまり、 SelectNodesメソッドが渡されたxpath式でノードを見つけられない場合、 null返しnullHTML Agility Pack Null Referenceと同様の質問に対するこの回答で、より多くの情報を見つけることができます。そして、実際にNullReferenceException引き起こすnullオブジェクトに対してToList()メソッドを呼び出します。

このチェックを避けるには、次のようにnullに対するこの変数を使用しnull

var nodes = htmlDoc.DocumentNode.SelectNodes(...);
if (nodes != null)
{
     nodeList = nodes.ToList();
}



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ