Выберите одну строку таблицы с помощью HtmlAgilityPack и переберите ее ссылки - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь перебрать одну строку таблицы и ее ссылки 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 голосов
/ 30 апреля 2018

Используемый вами XPath (//a[@href]) получит все ссылки в документе. // означает найти что-либо, начиная с корня документа.

Вы должны использовать .//a[@href], чтобы начать с текущего узла и выбрать все ссылки. Это займет только ссылки под выбранным вами узлом tr.

...