Почему я могу выполнить «содержащий» вызов атрибута класса элемента, но не других атрибутов, таких как href с XPath? - PullRequest
0 голосов
/ 13 января 2019

Я только начал изучать XPath, но немного запутался в следующем.

Я анализирую HTML (используя HTML-Agility-Pack в C # / .NET) и могу вызвать функцию содержимого атрибута "class" для элемента HTML, чтобы выбрать только те узлы, класс которых содержит конкретное значение.

Например, главный ответ на этот вопрос: Как мне сопоставить атрибут, содержащий определенную строку?

Но я не могу вызвать функцию contains для атрибута "href" HTML-элемента "a" (гиперссылка).

Например, кажется, что требуется более сложное решение, согласно этому принятому SO ответу: Xpath получает, если href содержит часть строки

И если я пытаюсь использовать следующий код XPath, я получаю ArgumentNullException: исключение «Значение не может быть пустым».

//td/a[contains(@href, 'part-of-the-hyperlink')]

Это релевантная часть HTML, которую я пытаюсь выбрать:

<td>
<a href="/name/part-of-the-hyperlink">
Hugh Dane
</a>          
</td>

Чего мне не хватает?

1 Ответ

0 голосов
/ 13 января 2019

Изменение

//td/a[contains(href, 'part-of-the-hyperlink')]

до

//td/a[contains(@href, 'part-of-the-hyperlink')]

для проверки атрибута , href, в противном случае вы проверяете дочерний элемент href (который не существует).

...