我需要使用Ruby和/或Rails生成XML文件并安装Nokogiri。
这是我的控制器文件中的代码:
class MonkeyTalkController < ApplicationController
require 'rubygems'
require 'nokogiri'
def edit
end
def update
#debugger
render :text => MonkeyTalk.new(params).build_xml
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
xml.root {
xml.products{
xml.widget {
xml.id_ "10"
xml.name "Awesome widget"
}
}
}
doc = Nokogiri::XML.parse(params)
File.open('xml.out', 'w') do |fo|
fo.print doc.to_s
end
end
puts builder.to_xml
end
end
我需要对Ruby和Rails应用程序的结构以及Nokogiri的工作方式有基本的了解。
答案 0 :(得分:5)
要生成xml文件,您不需要Rails。 Ruby(以及Nokogiri或一些奥德建造者)就足够了。
首先,你必须构建你的xml:
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
xml.root do
xml.products do
xml.widget do
xml.id_ "10"
xml.name "Awesome widget"
end
end
end
end
您可以使用builder.to_xml
xml_string = builder.to_xml # => "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <products>\n <widget>\n <id>10</id>\n <name>Awesome widget</name>\n </widget>\n </products>\n</root>\n"
要将此字符串保存到文件中,请使用File.open
和File#write
:
# open a file instance with path '/path/to/file.xml' in write mode (-> 'w')
File.open('/path/to/file.xml', 'w') do |file|
# write the xml string generated above to the file
file.write xml_string
end
重要提示:如果不再需要,您必须确保关闭所有打开的文件。带有块的File.open
(在我上面的剪辑中使用)将在执行块中的代码后自动为您关闭文件...
答案 1 :(得分:0)
您的文件已写入xml.out
。这个档案在哪里?这取决于启动应用程序时工作目录的内容,以及您的代码或任何库是否曾调用Dir.chdir
来更改工作目录。
您可以输出Dir.pwd
或File.expand_path('xml.out')
以查看此文件的写入位置。