2

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

var matchTableHtml =
            loginPage.DocumentNode
            .SelectNodes("//table[@id='uc_refereeMatchProgram_dgMatchCategory1']
                          //tr[@class!='DataGridHeaderStyle']");

これはノードのコレクションを返します-意図したとおりなので、問題ありません-しかし!!!

var testing = matchTableHtml.Descendants()
            .Select(x => new Match()
                             {
                                 Row = x.SelectSingleNode("//td/a[position()=1]")
                                       .InnerText
                             });

ここで「x」は、「matchTableHtml.Descendants」コレクションからではなく、documentNode からノードを返します。理由を知っている人はいますか?

4

1 に答える 1

2

わかりました-解決策は非常に簡単でした...「現在のノード」から開始していませんでしたが、//で始まるXPathはもちろんルートノードに関連しています。

簡単な解決策 - ドットを追加 - 現在から開始することを示します ('//' ==> './/'):

Row = x.SelectSingleNode(".//td/a[position()=1]")
                                   .InnerText
于 2012-09-15T08:01:23.677 に答える