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”从 documentNode 而不是从“matchTableHtml.Descendants”集合返回节点。有谁知道为什么?

4

1 回答 1

2

好的 - 解决方案非常简单......我不是从“当前节点”开始,但以 // 开头的 XPath 当然是相对于根节点的。

简单的解决方案 - 添加一个点 - 这表示我们从当前 ('//' ==> './/') 开始:

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