2008年02月10日(日)更新 |
■要素をソートして表示(sample12.rb)
たけち: 今回は、入力したXMLデータの要素をソートして表示してみよう。 さらら: あっ、はい。 たけち: 入力XMLファイルの要素をソートして出力XMLファイルをつくることをしたいんだけど、今回はその前に要素をソートして表示して見て、ソートの仕方の例を学んでおこうと思うんだ。 さらら: そうなんだ。 |
■読み込むXMLファイル
たけち: 読み込みXMLファイルはつぎのものを使うね。
|
読み込みXMLファイル sample12_in.xml |
---|
<?xml version="1.0" encoding="utf-8" ?> |
さらら: 何人かの人の歌が並んでいるわね。あと、詠み人が分からない歌もあるわね。 たけち: そうだね。今回のソート表示の例では、
さらら: はい。 たけち: じゃ、いきなりだけど、具体的なソースコードの例を見てみよう。 |
■Rubyサンプルプログラム(12) sample12.rbのソースコード
行 | Rubyサンプルプログラム(12) sample12.rb |
---|---|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
require "rexml/document" |
※ここでは、文字コードをutf-8としてsample12.rbを作成しています。 |
さらら: 長いわね。(^ ^; たけち: 今回のサンプルでは、Hash(ハッシュ)を使っているよ。 さらら: Hash(ハッシュ)ってなに? たけち: これを使うと簡単にキーでソートできるんだよ。今回の例では
さらら: そうなんだ。 |
※Hash(ハッシュ)については、Rubyのサイトや書籍を参照してくださいね。 |
たけち: 簡単にソースコードの説明をしておくね。まずは、13行目で、Hashを生成しているね。ここでは、まだ、Hashの中身は空(から)だからね。 さらら: はい。 たけち: 16〜22行目で、読み込んだXMLファイルのpoem要素を順にHash(ハッシュ)に追加しているね。で、22行目で、poem要素をHash(ハッシュ)に追加しているんだよ。 さらら: そうなんだ。キーが、poet + no = poemってとこなのかしら。。 |
たけち: そうそう。で、26行目で、キーでソートしているんだよ。 さらら: あら、それだけでいいの? たけち: そうそう。意外に簡単でしょ。 さらら: そうね。Hashに追加するのが面倒だけど。。。 たけち: そうそう。で、27〜31行目で、ソートされたHashから順にキーと要素(poem)を取り出して表示しているよ。 さらら: "なんとか.each" って前にもあったわね。そのときはHashじゃなかったけど。 |
■サンプルプログラムsample12.rbの実行結果の確認
たけち: じゃ、このsample12.rbを実行した結果をみてみよう。コマンドプロンプトウィンドウで
と入力してみて。 さらら: はい。 |
さらら: 歌人の名前と歌番号の後に、歌の内容が表示されているわ。それに、歌人順、歌番号順に。 たけち: ちゃんと実行できたみたいだね。 さらら: これを見て、やっと分かった気がするわ。 たけち: 今回のサンプルを踏まえて、次回は、入力XMLファイルを元に、歌人ごと、歌番号順にソートして出力XMLファイルを作ってみようね。 さらら: あっ、はい。そういうことね。 → 次回は要素をソートして出力 sample13.rbです。 (^ ^; |