Nokogiri XML文件输出位于何处?

时间:2013-07-08 00:12:07

标签: ruby-on-rails ruby xml nokogiri

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

  1. Ruby代码将在哪个文件中生成XML文件?
  2. 如何告诉Nokogiri生成XML并将其放入文件?
  3. XML输出位于何处?
  4. 这是我的控制器文件中的代码:

    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的工作方式有基本的了解。

2 个答案:

答案 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字符串
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.openFile#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.pwdFile.expand_path('xml.out')以查看此文件的写入位置。