2009-12-07 52 views
0

我打算使用Hpricot來處理XML文件。我想從文件中隨機顯示一些引號,然後我想跟蹤每個引號顯示的頻率。 是否有可能使用Hpricot更新XML文件中的單個項目(或者是否有其他解決方案可以爲我執行此操作?),還是應該在每次顯示項目時重寫整個XML文件?在Ruby中使用Hpricot更新單個XML實體?

回答

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 

你有這麼大的文件,這將是這樣慢?

還是你想要的東西我還沒有明白?

-2

我看到一對夫婦的解決方案:

  1. 解析文件後,保存在數據庫,並使用額外的屬性,viewed保持跟蹤。
  2. 如果DB不可用,解析一次並保留Yaml。更容易解析,閱讀和回寫。每次都會爲您節省寶貴的執行時間。

如果您不斷更新文件或與遠程服務器同步文件,那麼將信息存儲在數據庫中是最佳選擇。