Используя 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>
0
ebattulga 4 Ноя 2009 в 20:54
Какая технология? XPath? Что-то другое?
 – 
Jim Garrison
4 Ноя 2009 в 21:04

2 ответа

Лучший ответ
/table/tr[@style = "color:#ff00ff"]/following-sibling::tr[1]/td[1]/text()

Выбирает <tr>, у которого есть style="color:#ff00ff", и, начиная с него, текст первого дочернего элемента <td> первого следующего за ним <tr>.

Для дополнительной безопасности вы можете использовать:

tr[translate(@style, ' ', '') = "color:#ff00ff"]

Это удаляет все пробелы из значения атрибута, поэтому все становится немного более независимым от источника HTML.

2
Tomalak 5 Ноя 2009 в 12:50

При использовании jQuery это может выглядеть примерно так:

$('tr[style*="color:#ff00ff"]').next('tr').children().text();

Однако это сильно зависит от вашей точной структуры документа и определения стиля. Он найдет любой tr, стиль которого содержит строку «color: # ff00ff» (точно, без пробелов и т. Д.). Затем из этой строки он выберет следующую соседнюю строку и получит текстовое содержимое от всех своих прямых дочерних элементов. В вашем случае это будет элемент с одним столбцом.

0
tvanfosson 4 Ноя 2009 в 21:00