我在控制台应用程序中使用HTML Agility Pack来解析某个网页。
我设法得到我正在寻找的表,然后选择所有行。到目前为止,一切都很好。
我的代码如下:
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
,但我只会收到错误。我有什么问题吗?
答案 0 :(得分:1)
您的第二个选择//td
以递归方式选择(两个/
)并从顶部开始(表达式以/
开头)。你想要的更像是这样:
var cells = row.SelectNodes(".//td");
这意味着从当前上下文/节点(.
)递归选择。
有关XPATH表达式的更多信息,请参阅此处XPATH Syntax。