开发者

Delete Nodes from a HTML table using Nokogiri

I have been scratching my head over this for a while. Help me out before I start picking my brain.

I have a html document that has an events table which has 'In' and 'Out' as part of the columns. A record can either be an In or Out event. I wan't to only get the rows with values in the 'In' column and then save the text in an event model with the same attributes. The code below is what I have which returns '0'.

#!/usr/bin/env ruby

require 'rubygems'
require 'nokogiri'


doc = Nokogiri::HTML <<-EOS
  <table><thead><th>Reference</th><th>Event Date</th><th>Event Details</th><th>In</th><th>Out</th></thead><tbody><tr><td>BCE16</td><td>2011-08-16 11:14:52</td><td>Received from Arap Moi</td><td>30.00</td><td></td></tr><tr><td>B07K2</td><td>2011-08-16 11:10:06</td><td>Sent out to John Doe.</td><td>&nbsp;</td><td>-50.00</td></tr></tbody><tfoot></tfoot></table>
EOS


minus_received = doc.xpath('//td[contains(text(), "Received from")]')开发者_如何学运维.each do |node| 
  node.parent.remove
end

p minus_received.to_s

Human Readable markup

<table>
  <thead>
    <th>Reference</th>
    <th>Event Date</th>
    <th>Event Details</th>
    <th>In</th>
    <th>Out</th>
  </thead>

  <tbody>
  <tr>
    <td>BCE16</td>
    <td>2011-08-16 11:14:52</td>
    <td>Received from Arap Moi.</td>
    <td>30.00</td>
    <td></td>
  </tr>
  <tr>
    <td>B07K2</td>
    <td>2011-08-16 11:10:06</td>
    <td>Sent out to John Doe.</td>
    <td>&nbsp;</td>
    <td>-50.00</td>
  </tr>
  </tbody>
  <tfoot></tfoot>
</table>

I appreciate your help.


You're outputting the value of .each - if you look at doc after your each call finishes, the html only contains the header and John Doe.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜