2

Ruby や Rails で XML ファイルを生成し、Nokogiri をインストールする必要があります。

  1. XMLファイルを生成するRubyコードはどのファイルに入っていますか?
  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"

この文字列をファイルに保存するには、 and を使用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ブロックを使用すると(上記の抜粋で使用されているように)、ブロック内のコードが実行された後、ファイルが自動的に閉じられます...

于 2013-07-10T07:27:08.077 に答える
0

ファイルは に書き込まれましたxml.out。このファイルはどこにありますか? Dir.chdirアプリケーションを起動したときの作業ディレクトリと、作業ディレクトリを変更するためにコードまたはライブラリが呼び出されたかどうかによって異なります。

出力しDir.pwdたりFile.expand_path('xml.out')、このファイルが書き込まれた場所を確認したりできます。

于 2013-07-11T04:47:41.657 に答える