0

コンソール アプリケーションで HTML Agility Pack を使用して、特定の Web ページを解析しています。

探しているテーブルを取得し、すべての行を選択することができました。その時点まで、すべてがうまく機能します。

私のコードは次のようになります。

var rows = table.SelectNodes("//tr");
foreach(var row in rows)
{
    var cells = row.SelectNodes("//td");
    Console.WriteLine(cells.Count);

    foreach(var cell in cells) {
        // Do something
   }
}

各行には 4 つのセルが必要であり、代わりに 697 (テーブル全体のセルの数) が得られます。使ってみ/td .//tdましたが、エラーしか出ません。私が間違っていることのヒントはありますか?

4

1 に答える 1

1

2 番目の selectは、//td再帰的に ( two /) 上から選択します (式は a で始まります/)。あなたが望むのは、次のようなものです:

var cells = row.SelectNodes(".//td");

これは、現在のコンテキスト/ノードから再帰的に選択することを意味します ( .)。

XPATH 式の詳細については、こちらのXPATH 構文を参照してください。

于 2013-08-23T08:11:23.173 に答える