Извлечь значение td с помощью XPath

77
8

Мне нужно извлечь значения, которые находятся в таблице ячеек HTML, используя XPath, и я бы не хотел использовать "позиционную" строку XPath.

Мой пример кода похож на этот

<body>
<table>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>
<td>
<table id="GridView5">
<tr>...</tr>
<tr>...</tr>
<tr>
<td>First Title</td>
<td>1</td>
<td>2</td>
<td>3</td>
<tr>
</table>
</td>
</tr>
</table>
</body>

Я пытаюсь использовать что-то вроде этого выражения XPath

//*[@id="GridView5"]/*[td="First Title"]/td[3]

для извлечения значения " 2 " из приведенного выше кода

Предложения? Примеры?

спросил(а) 2021-01-27T20:22:57+03:00 4 месяца, 3 недели назад
1
Решение
78

Этот XPath,

//table[@id="GridView5"]/tr[td="First Title"]/td[3]

выберет третий td дочерний элемент tr который имеет td дочерний элемент со строковым значением First Title в table со значением атрибута id GridView5.

Он использует единственный позиционный селектор для запрошенного элемента td потому что ваша разметка не дает другого способа дифференцировать td который содержит 2, если вы не допускаете предположения, что 2 приходит после 1 или до 3 (обрабатывая метку). Если предыдущие или следующие td элементы могут служить в качестве меток, вы можете использовать предыдущую или следующую ось сестры вместо [3].

//table[@id="GridView5"]/tr[td="First Title"]/td[.='1']/following-sibling::td[1]

но даже здесь вам понадобится [1] чтобы выбрать только сразу следующего брата.

ответил(а) 2021-01-27T20:22:57+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема