Ruby:一次修改XML文件

时间:2010-10-11 22:41:54

标签: ruby xml

我正在尝试读取RSS字段并为Ruby中的每个项添加一些元数据,输出另一个有效的RSS源。

我想在一次通过中执行此操作,而不是出于性能原因将整个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-ruby,但Nokogiri也是基于libxml构建的,似乎也有相同的限制,根据我看过的每篇文章,REXML看起来都太慢了。

任何帮助将不胜感激!

否则,我想现在是正则表达式的时候......

1 个答案:

答案 0 :(得分: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