2013-07-08 71 views
2

我需要使用Ruby和/或Rails生成XML文件並安裝了Nokogiri。Nokogiri XML文件輸出位於哪裏?

  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是如何工作的。

+0

您需要向我們展示您編寫的代碼。因此,看起來你對代碼和Nokogiri的工作和交互有着重大誤解,如果沒有看到你寫的內容並告訴我們出了什麼問題,我們就不能真正解決它們。 –

+1

謝謝。原諒我,我忘了添加我的代碼。 – ironmantis7x

+0

請理解,我不知道我不知道什麼!我一直在這個論壇試圖瞭解ruby/rails和nokogiri是如何工作的。我只需要對ruby/rails和nokogiri寶石的結構有一個基本的瞭解。 – ironmantis7x

回答

5

要生成一個xml文件,你不需要Rails。紅寶石(和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帶有一個塊(用於我上面的剪切)會在塊中的代碼執行後自動關閉文件...

0

您的文件被寫入xml.out。這個文件在哪裏?這取決於您啓動應用程序時的工作目錄是什麼,以及您的代碼或任何庫是否調用Dir.chdir來更改工作目錄。

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