On Wed, Aug 23, 2006 at 07:15:09AM +0900, rubyhacker / gmail.com wrote: > Input: > > <html> > <body> > <p>Hi, there.</p> > <foo bar="this" bam="that">some more text</foo> > <p>That's all.</p> > </body> > </html> > > Output: > <html> > <body> > <p>Hi, there.</p> > <p>I found a foo tag enclosing 'some more text' with > bar and bam values of 'this' and 'that'...</p> > <p>That's all.</p> > </body> > </html> So, in Hpricot: doc = Hpricot("<html>...</html>") doc.search("foo").each do |ele| new_ele = Hpricot \ '<p>I found a ' + ele.name + " tag enclosing \'" + ele.inner_html + "' with " + ele.attributes.keys.join(' and ') + " values of " + ele.attributes.values.map { |x| "'#{x}'" }.join(' and ') + "...</p>" ele.parent.replace_child(ele, new_ele.children.first) end puts doc REXML has a replace_child as well. But now you've motivated me to add Element#replace. _why