iro*_*s7x 2 ruby xml ruby-on-rails nokogiri
我需要使用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
Run Code Online (Sandbox Code Playgroud)
我需要对Ruby和Rails应用程序的结构以及Nokogiri的工作原理有一个基本的了解.
要生成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
Run Code Online (Sandbox Code Playgroud)
您可以使用builder.to_xml以下命令从此构建器获取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"
Run Code Online (Sandbox Code Playgroud)
要将此字符串保存到文件中,请使用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
Run Code Online (Sandbox Code Playgroud)
重要提示:如果不再需要,您必须确保关闭所有打开的文件.File.open使用块(在我上面的剪辑中使用)将在执行块中的代码后自动为您关闭文件...