Nokogiri replace tag values
2 answers
require 'rubygems' require 'nokogiri' doc = Nokogiri::HTML(DATA) doc.xpath('//text()').each {|foo| dummy = foo.add_previous_sibling(Nokogiri::XML::Node.new("dummy", doc)) dummy.add_previous_sibling(Nokogiri::XML::Text.new(foo.to_s.gsub(/foo/, "bar"), doc)) foo.remove dummy.remove } puts doc __END__ <h1>foo1<p>foo2<a href="foo3.com">foo4</a>foo5</p>foo6</h1> I would think that foo.inner_html.gsub!(/foo/, "bar") works, or maybe foo.inner_html = foo.inner_html.gsub(/foo/, "bar") , but it is not. The node dummy is to save the new node text according to the old node text.
+2