プログラムTIPS

DEMO PROGRAM ヘキサドライブでは様々な研究開発をしています。その一部を紹介。

こはRubyより(2009年3月24日)

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

そうやって時間が作れれば、その時間を使ってさらなる高みを目指して!ですよね。

【免責事項】

本サイトが提供している情報に関しては、安全性等、いかなる保証もされません。 株式会社ヘキサドライブは、これらの情報をあなたが利用することによって生ずるいかなる損害に対しても一切責任を負いません。

【著作権】

本サイトが提供しているコンテンツについては、特に断りのある場合を除き、株式会社ヘキサドライブが著作権を有します。