使用HtmlAgilityPack选择单个表行并迭代其链接

时间:2018-04-29 17:41:23

标签: c# parsing html-agility-pack

我尝试迭代单个表行并且它的一个href链接但它不能按预期工作,而不是找到所选行及其链接它找到表中的所有链接..我做错了什么?

                        var allRows = doc.DocumentNode.SelectNodes("//table[@id='sortingTable']/tr");

        var i = 0;
        var rowNumber = 0;
        foreach (var row in allRows)
        {
            if (row.InnerText.Contains("Text in cell for which row I want to use"))
            {
                rowNumber = i+1;
                break;
            }
            i += 1;
        }

        var list = new List<SortFile>();
        var rowToRead = allRows[rowNumber]; // One specific row

        var numberOfLinks = rowToRead.SelectNodes("//a[@href]"); // this does not find the 2 links in the table row but all links in the whole table?

        foreach (HtmlNode link in rowToRead.SelectNodes("//a[@href]"))
        {
            //HtmlAttribute att = link.Attributes["href"];
            //var text = link.OuterHtml;
        }

1 个答案:

答案 0 :(得分:0)

您正在使用的XPath(//a[@href])将获取文档中的所有链接。 //表示从文档根目录开始查找任何内容。

您应该使用.//a[@href]从当前节点开始并选择所有链接。这只会获取您选择的tr节点下的链接。