春を感じられる日々になってきました

あとは、花粉が治まれば春を楽しめそうなのですが・・・

こんにちは、ハラです。
前回の流れに沿って、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++で扱いやすい中間データへコンバートすれば、
全体の作業量はかなり減るんじゃないでしょうか


そうやって時間が作れれば、さらなる高みを目指して


