我需要用Ruby和/或Rails生成一个XML文件,并安装Nokogiri。
- Ruby代码将在哪个文件中生成XML文件
- 如何告诉Nokogiri生成XML并将其放入文件中
- XML输出位于哪里
这是我的控制器文件中的代码:
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的工作原理有一个基本的了解。
要生成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字符串
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
(如我在上面剪下的)将在块中的代码执行后自动为您关闭文件。。。
您的文件已写入xml.out
。这个文件在哪里?这取决于启动应用程序时的工作目录,以及您的代码或任何库是否调用过Dir.chdir
来更改工作目录。
您可以输出Dir.pwd
或File.expand_path('xml.out')
来查看此文件的写入位置。