2010-10-11 90 views
0

我正在嘗試讀取RSS字段並向Ruby中的每個項添加一些元數據,輸出另一個有效的RSS提要。Ruby:一次修改一個XML文件

我想一次性完成此操作,但出於性能原因未將整個RSS源讀入內存,但我一直在玩libxml-ruby,並且Reader對象似乎無法打印出來它剛剛讀取的當前元素,這使得很難遍歷XML文件並打印出每個元素。

例如:

<rdf:RDF> 
    <item> 
    <description>foo</description> 
    </item> 
</rdf:RDF> 

應該成爲

<rdf:RDF> 
    <item> 
    <metadata>(some metadata about this item)</metadata> 
    <description>foo</description> 
    </item> 
</rdf:RDF> 

我不依賴與libxml-紅寶石,但引入nokogiri也是建立在libxml的,似乎有相同的限制,似乎REXML根據我見過的每一篇文章都太慢了。

任何幫助將不勝感激!

否則,我想是正規表達式的時間...

回答

0

只是一個開始。

f=0 
File.readlines("file").each do |line| 
    f=0 if line[/<\/rdf/] 
    f=1 if line[/<rdf:RDF/] 
    if f==1 and line["description"] 
    line="<meta ...>\n" + line 
    end 
    puts line 
end 
+0

我確實決定做這樣的事情,用循環和正則表達式。看起來像這總是會比將它加載到xml解析器中更快! – 2010-10-15 21:29:26