在Ruby中使用Hpricot更新单个XML实体?

时间:2009-12-07 17:09:35

标签: xml ruby hpricot

我将使用Hpricot来处理XML文件。我想从文件中随机显示一些引号,然后我想跟踪每个引用的显示频率。 我是否可以使用Hpricot更新XML文件中的单个项目(或者是否有其他解决方案可以为我执行此操作?)或者我是否应该在每次显示项目时重写整个XML文件?

2 个答案:

答案 0 :(得分:1)

我曾经使用过nokogiri而不是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

你有这么大的文件,这会慢吗?

或者你想要一些我不理解的东西?

答案 1 :(得分:-2)

我看到了几个解决方案:

  1. 解析文件一次并将其存储在数据库中,并使用其他属性viewed来保留曲目。
  2. 如果DB不可用,请解析一次并保留Yaml。更容易解析,读写。每次都可以节省宝贵的执行时间。
  3. 如果您不断更新文件或将文件与远程服务器同步,那么将信息存储在数据库中是您最好的选择。