我从未遇到过将XML从一种形式转换为另一种形式的任务。我听说XSLT就是为了这个,但我不想去那里。所以,只使用ruby和nokogiri,我怎么能:
来自初始XML的删除所有项 元素,但时间以及重命名元素 时间到 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>"
之类的内容?
答案 0 :(得分:2)
你走了:
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
答案 1 :(得分:0)
你的意思是什么
到另一个XML而无需手动编写类似
puts "<HammerTime>#{array['time']}</HammerTime>"
的内容?
如果要以与语言无关的方式将XML元素转换为另一个元素,可以使用XSLT转换(或样式表)。获得XSLT文件后,可以将其应用于Nokogiri的Nokogiri::XSLT::Stylesheet#apply_to
。