私が取り組んでいるプロジェクトがあり、Rails や Ruby についてあまり知りません。
ユーザー入力から XML ファイルを生成する必要があります。これを非常に迅速かつ簡単に行う方法を教えてくれるリソースに案内してもらえますか?
私が取り組んでいるプロジェクトがあり、Rails や Ruby についてあまり知りません。
ユーザー入力から XML ファイルを生成する必要があります。これを非常に迅速かつ簡単に行う方法を教えてくれるリソースに案内してもらえますか?
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>
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>