MENU閉じる

HEXA BLOG

プログラム

HEXA BLOGプログラム2009.3.24

こはRubyより

ここ数日、暖かくなったり寒くなったりを繰り返していますが、
春を感じられる日々になってきましたかわいい
あとは、花粉が治まれば春を楽しめそうなのですが・・・もうやだ〜(悲しい顔)
こんにちは、ハラです。
前回の流れに沿って、RubyでXMLを読みこんでみたいと思います。
XMLの読み込みには、Rubyで実装されたXMLパーサーの
「REXML」を使ってみますひらめき
今回読み込むデータは下の通りです。
簡単なデータを定義した・・・という想定ですメモ

<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="sample_data1" date="2009/03/24">
<string count="2">apple orange</string>
<number count="3">123 456 7890</number>
</data>
<data name="sample_data2" date="2009/03/24">
<string count="1">grape</string>
<number count="5">1 2 3 4 5</number>
</data>
</root>

XML読み込み、その内容を出力しているのが下のスクリプトです。左斜め下

require 'rexml/document'
# XMLファイルを読み込み
xml = REXML::Document.new(File.open('sample.xml'))
# data要素を検索
xml.elements.each('root/data') do | data_tag |
puts 'Name : ' + data_tag.attributes['name']
puts 'Date : ' + data_tag.attributes['date']
# string要素を出力
data_tag.elements.each('string') do | string_tag |
puts '  Count : ' + string_tag.attributes['count']
puts '  Text  : ' + string_tag.text
end
# number要素を出力
data_tag.elements.each('number') do | number_tag |
puts '  Count : ' + number_tag.attributes['count']
puts '  Text  : ' + number_tag.text
end
end

その実行結果は、下の通りになります。

Name : sample_data1
Date : 2009/03/24
Count : 2
Text  : apple orange
Count : 3
Text  : 123 456 7890
Name : sample_data2
Date : 2009/03/24
Count : 1
Text  : grape
Count : 5
Text  : 1 2 3 4 5

要素の属性や内容へのアクセス方法はそれぞれ

  <img src="https://blog.sakura.ne.jp/images_e/117.gif" alt="次項有" width="15" height="15" border="0" />属性  attributesメンバに対して、属性名を使って配列アクセス
<img src="https://blog.sakura.ne.jp/images_e/117.gif" alt="次項有" width="15" height="15" border="0" />内容  textメンバへアクセス

で行えます。
XML形式で出力されるデータは意外と多いですが、
C/C++で扱うとちょっと大変だったりしますたらーっ(汗)
スクリプト言語を使い、作品が直接読み込むデータへコンバートしたり、
C/C++で扱いやすい中間データへコンバートすれば、
全体の作業量はかなり減るんじゃないでしょうかexclamationわーい(嬉しい顔)
そうやって時間が作れれば、さらなる高みを目指してグッド(上向き矢印)グッド(上向き矢印)グッド(上向き矢印)です。

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE