下記のプログラムは、XML の宣言要素だけを出力するサンプルです。
require 'rexml/document'
doc = REXML::Document.new
doc << REXML::XMLDecl.new('1.0', 'UTF-8')
File.open('output.xml', 'w') do |file|
doc.write(file, indent=2)
end
<?xml version='1.0' encoding='UTF-8'?>
出力をファイルではなく、標準出力に変更したい場合は、下記のようにします。
doc.write(STDOUT)
要素を追加していくには、REXML::Element
オブジェクトを作成します。
# ルートノードを作成
root = REXML::Element.new('Root')
doc.add_element(root)
# ルートノードの下に子ノードを追加
child1 = REXML::Element.new('Child')
child2 = REXML::Element.new('Child')
child1.add_text('Text1')
child2.add_text('Text2')
child1.add_attribute('attr', 'value1')
child2.add_attribute('attr', 'value2')
root.add_element(child1)
root.add_element(child2)
以下のような XML が生成されます。
<?xml version='1.0' encoding='UTF-8'?>
<Root>
<Child attr='value1'>
Text1
</Child>
<Child attr='value2'>
Text2
</Child>
</Root>