Rubyでrexmlを使いxml処理をしてみました。

下記URL参考
http://www.nslabs.jp/ruby-rexml.rhtml

まずサンプルの動きを確認してみます。

リファレンスに載っているプログラムをそのまま動かしてみます。

require 'rexml/document'

doc = REXML::Document.new
doc << REXML::XMLDecl.new('1.0', 'UTF-8')

feed = doc.add_element("feed", {"xmlns" => "http://www.w3.org/2005/Atom"})
feed.add_element("title", {'type' => 'text'}).add_text "Netsphere Feed"

doc.write STDOUT

実行結果です。

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom'>
<title type='text'>Netsphere Feed</title>
</feed>

Rubyはとても直感的にプログラムが書けてしまうのが素晴らしいですね。

rexmlで遊んでみました。

実際に自分でプログラムを書いてみました。

require 'rexml/document'

doc = REXML::Document.new
doc << REXML::XMLDecl.new('1.0', 'UTF-8')

feed = doc.add_element("channel", {"rdf:about" => "http://d.hatena.ne.jp/camelmasa/rss"})
feed.add_element("title").add_text "camelmasaの開発日記"
feed.add_element("link").add_text "http://d.hatena.ne.jp/camelmasa/"
feed.add_element("description").add_text "camelmasaの開発日記"
feed.add_element("image", {"rdf:resource" => "http://d.hatena.ne.jp/images/diary/c/camelmasa/camelmasa_m.gif"})
feed.add_element("dc:creator").add_text "camelmasa"
feed.add_element("dc:date").add_text "2008-06-26T12:34:27+09:00"

doc.write STDOUT

実行結果です。

<?xml version='1.0' encoding='UTF-8'?>
<channel rdf:about='http://d.hatena.ne.jp/camelmasa/rss'>
<title>camelmasaの開発日記</title>
<link>http://d.hatena.ne.jp/camelmasa/</link>
<description>camelmasaの開発日記</description>
<image rdf:resource='http://d.hatena.ne.jp/images/diary/c/camelmasa/camelmasa_m.gif'/>
<dc:creator>camelmasa</dc:creator><dc:date>2008-06-26T12:34:27+09:00</dc:date>
</channel>

RSSならすぐに作れそうですね。

まとめ

DOMツリーを、rubyで簡単に生成出来る事がわかりました。

追記

rexmlはDOMツリーを生成するだけでは無く、XMLパーサ機能もあるようです。
phpではSimpleXML関数でパース出来ますね。

今度挑戦してみたいと思います。



[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/