ruby - 使用 ruby​​/nokogiri 将 xml 转换为另一个 xml

标签 ruby xml nokogiri

我从未遇到过将 XML 从一种形式转换为另一种形式的任务。我听说 XSLT 就是为此目的,但我不想去那里。所以,只使用 ruby​​ 和 nokogiri,我怎么能:
从初始 XML 中删除所有item 元素,但 time重命名元素 时间HammerTime
初始 XML:

...
<item>
  <time>05.04.2011 9:53:23</time>
  <iddqd>42</iddqd>
  <idkfa>woot</idkfa>
</item>
<item>
...

期望的结果:

...
<item>
  <HammerTime>05.04.2011 9:53:23</HammerTime>
</item>
<item>
...

我想出了如何使用 nokogiri 的 .xpath 将数据从 XML 放入数组,但是有没有一种方法可以将所需的转换成另一个 XML,而不必手动编写类似 puts "<HammerTime>#{array['time']}</HammerTime>" 的东西? ?

最佳答案

给你:

require 'rubygems'
require 'nokogiri'

doc = Nokogiri::HTML <<-EOHTML
<html>
  <body>
    <item>
      <time>05.04.2011 9:53:23</time>
      <iddqd>42</iddqd>
      <idkfa>woot</idkfa>
    </item>
  </body>
</html>
EOHTML

hammer = doc.at_css "time"
hammer.name = 'hammertime'
doc.css("iddqd").remove
doc.css("idkfa").remove

outfile = File.new("output.html", "w")
outfile.puts doc.to_html
outfile.close

关于ruby - 使用 ruby​​/nokogiri 将 xml 转换为另一个 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584443/

相关文章:

ruby-on-rails - Mongoid:向模型添加哈希但无法写入

Ruby 不能访问方法外的变量?

xml - 如何使用现有的 Nant 或 Nant Contrib 任务附加 XML 节点?

ruby - 如何使用 Nokogiri 获取某些标签之后或之前的文本

ruby - 使用带有正则表达式的 Mechanize 来选择要关注的链接中的特定文本

javascript - 在 Rails 中的确认对话框中单击“取消”时触发 'click' 事件

ruby-on-rails - Twilio-Ruby 验证失败

java - 如何在 StAX 中跟踪大文件的解析进度?

java - 关于java中前缀和后缀的问题

ruby - 抓取 AngularJS 应用程序