LAB
研究室
RubyプログラムTIPS
こは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
要素の属性や内容へのアクセス方法はそれぞれ
属性 attributesメンバに対して、属性名を使って配列アクセス
内容 textメンバへアクセス
で行います。
XML形式で出力されるデータは意外と多いですが、
ゼロからC/C++で扱うとちょっと大変だったりします。
スクリプト言語を使い、作品が直接読み込むデータへコンバートしたり、
C/C++で扱いやすい中間データへコンバートすれば、
全体の作業量はかなり減るんじゃないでしょうか!
そうやって時間が作れれば、その時間を使ってさらなる高みを目指して!ですよね。
CATEGORY
- 製品事例 (7)
- デモプログラム (18)
- プログラムTIPS (41)
- C言語 (5)
- C++ (6)
- C++cording (4)
- Ruby (8)
- VisualStudioの使い方 (3)
- 最適化Tips (5)
- ゲーム開発テクニック (2)
- その他 (7)