Раньше я работал с нокогири вместо hpricot (это значительно быстрее).
Я сделал что-то вроде этого:
#!/usr/bin/env ruby
require 'rubygems'
require 'nokogiri'
FNAME = "/home/kirill/books.xml"
doc = Nokogiri::XML(open(FNAME))
doc.search('title').each {|node|
node.content=node.content.reverse
}
File.new(FNAME,'w').write doc unless doc.validate
У вас есть такой большой файл, который будет слишком медленным?
Или ты хочешь что-то еще, чего я не понял?