Html Agility Pack - Jak znaleźć węzeł o następującej zawartości?

0

W kodzie strony jest następująca zawartość:

            <tr>
              <td>Numer błędu</td>
              <td>
                  0                  <a href="/sterownik-5-usun-bledy">kasuj błędy</a>              </td>
            </tr>

Chciałbym znaleźć węzeł:

              <td>
                  0                  <a href="/sterownik-5-usun-bledy">kasuj błędy</a>              </td>

Próbowałem w następujący sposób:

var node = doc.DocumentNode.SelectNodes("//td").Where(n => n.FirstChild.InnerHtml.Contains("kasuj błędy")).FirstOrDefault();

lub

var node = doc.DocumentNode.SelectNodes("//td").Where(n => n.FirstChild.Attributes["a"].Value.Contains("/sterownik-5-usun-bledy")).FirstOrDefault();

ale niestety bez rezultatu.

0

Na przyszłość warto poprawić formatowanie kodu. Pozbyć się niepotrzebnych wcięć etc. W visual studio możesz też kopiować poprzez przytrzymanie alta i zaznaczenie właściwego bloku kodu.

var test = doc.DocumentNode.SelectNodes("//td").Where(x => x.InnerHtml.Contains("kasuj błędy")).FirstOrDefault();
var test2 = doc.DocumentNode.SelectNodes("//td/a[@href]").Where(x => x.Attributes["href"].Value == "sterownik-5-usun-bledy").FirstOrDefault();

e: ten drugi przykład nie jest idealny, ale zawsze możesz dostać się poprzez właściwość ParentNode;

0

Przepraszam za formatowanie. Po prostu skopiowałem kod z widoku źródła w Chrome bez żadnych zmian.
Dzięki za rozwiązanie. Sprawdzę przy okazji.

0

Takie coś też powinno zadziałać:
//tr[td[text()='Numer błędu']]/td[a[text()='kasuj błędy']]/text()

1 użytkowników online, w tym zalogowanych: 0, gości: 1