7

私が取り組んでいるプロジェクトがあり、Rails や Ruby についてあまり知りません。

ユーザー入力から XML ファイルを生成する必要があります。これを非常に迅速かつ簡単に行う方法を教えてくれるリソースに案内してもらえますか?

4

2 に答える 2

19

Nokogiri gem には XML をゼロから作成するための優れたインターフェースがあります。パワフルでありながら使いやすいです。それは私の好みです:

require 'nokogiri'
builder = Nokogiri::XML::Builder.new do |xml|
  xml.root {
    xml.products {
      xml.widget {
        xml.id_ "10"
        xml.name "Awesome widget"
      }
    }
  }
end
puts builder.to_xml

出力します:

<?xml version="1.0"?>
<root>
  <products>
    <widget>
      <id>10</id>
      <name>Awesome widget</name>
    </widget>
  </products>
</root>

また、Oxもこれを行います。ドキュメントのサンプルを次に示します。

require 'ox'

doc = Ox::Document.new(:version => '1.0')

top = Ox::Element.new('top')
top[:name] = 'sample'
doc << top

mid = Ox::Element.new('middle')
mid[:name] = 'second'
top << mid

bot = Ox::Element.new('bottom')
bot[:name] = 'third'
mid << bot

xml = Ox.dump(doc)

# xml =
# <top name="sample">
#   <middle name="second">
#     <bottom name="third"/>
#   </middle>
# </top>
于 2013-06-25T23:52:04.107 に答える
3

Nokogiri は libxml2 のラッパーです。

Gemfile gem 'nokogiri' xml を簡単に生成するには、Nokogiri XML Builder を次のように使用します。

xml = Nokogiri::XML::Builder.new { |xml| 
    xml.body do
        xml.node1 "some string"
        xml.node2 123
        xml.node3 do
            xml.node3_1 "another string"
        end
        xml.node4 "with attributes", :attribute => "some attribute"
        xml.selfclosing
    end
}.to_xml

結果は次のようになります

<?xml version="1.0"?>
<body>
  <node1>some string</node1>
  <node2>123</node2>
  <node3>
    <node3_1>another string</node3_1>
  </node3>
  <node4 attribute="some attribute">with attributes</node4>
  <selfclosing/>
</body>

ソース: http://www.jakobbeyer.de/xml-with-nokogiri

于 2016-08-09T09:50:33.933 に答える