2

我需要使用 Ruby 和/或 Rails 生成 XML 文件并安装 Nokogiri。

  1. Ruby 代码在哪个文件中生成 XML 文件?
  2. 如何告诉 Nokogiri 生成 XML 并将其放入文件中?
  3. 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 的工作原理有基本的了解。

4

2 回答 2

6

要生成 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

您可以使用以下方法从此构建器获取 xml 字符串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.openand 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在块中的代码执行后,带有块(如我上面的片段中使用的)将自动为您关闭文件......

于 2013-07-10T07:27:08.077 回答
0

您的文件已写入xml.out. 这个文件在哪里?这取决于您启动应用程序时的工作目录,以及您的代码或任何库是否曾调用Dir.chdir过更改工作目录。

您可以输出Dir.pwdFile.expand_path('xml.out')查看此文件的写入位置。

于 2013-07-11T04:47:41.657 回答