views:

86

answers:

2

Using XPath and the HTML Agility Pack, I need to select the destination text using color:#ff00ff.

My HTML looks like this:

<table>
   <tr style="color:#ff00ff">
      <td></td>
   </tr>
   <tr>
      <td>destination</td>
   </tr>
   <tr>
      <td></td>
   </tr>
   <tr>
      <td>not destination</td>
   </tr>
</table>
A: 

Using jQuery it might look something like this:

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

This is heavily dependent on your exact document structure and style definition, though. It will find any tr that has a style containing the string "color:#ff00ff" (exactly, no spaces, etc). From that row it will then select the next sibling row and get the text contents from all of it's direct children. In your case, this would be the single column element.

tvanfosson
+1  A: 
/table/tr[@style = "color:#ff00ff"]/following-sibling::tr[1]/td[1]/text()

Selects the <tr> that has style="color:#ff00ff", and going from there, the text of the first <td> child of the first following <tr>.

For extra safety, you could use:

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

This removes any spaces from the attribute value, so things get a bit more independent from the HTML source.

Tomalak