как выбрать узел XML, используя элемент Near
-
16-09-2019 - |
Вопрос
Используя XPath и пакет HTML Agility Pack, мне нужно выбрать destination
текст с использованием color:#ff00ff
.
Мой HTML выглядит так:
<table>
<tr style="color:#ff00ff">
<td></td>
</tr>
<tr>
<td>destination</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>not destination</td>
</tr>
</table>
Решение
/table/tr[@style = "color:#ff00ff"]/following-sibling::tr[1]/td[1]/text()
Выбирает <tr>
который имеет style="color:#ff00ff"
, и оттуда текст первого <td>
ребенок первого следующего <tr>
.
Для дополнительной безопасности вы можете использовать:
tr[translate(@style, ' ', '') = "color:#ff00ff"]
Это удаляет все пробелы из значения атрибута, поэтому все становится немного более независимым от источника HTML.
Другие советы
Используя jQuery, это может выглядеть примерно так:
$('tr[style*="color:#ff00ff"]').next('tr').children().text();
Однако это во многом зависит от вашей точной структуры документа и определения стиля.Он найдет любой tr, стиль которого содержит строку «color:#ff00ff» (точно, без пробелов и т. д.).Затем из этой строки он выберет следующую одноуровневую строку и получит текстовое содержимое от всех своих прямых дочерних элементов.В вашем случае это будет один элемент столбца.