はるのうたたね
2008.09.27
カテゴリ:Flash

Ruby on RailsとFlash(ActionScript)のXML連携

RSS

二回目の記事投稿となります。新人エンジニアの はる です。

Ruby on RailsとFlashの連携方法はいくつかありますが、
今回は、Ruby on RailsとFlash(ActionScript)のXML連携について書いてみたいと思います。

Rails側とFlash側の作業は、

[Rails]REXMLを使用してxmlを生成する。
[Flash]XML.loadメソッドを使用して、xmlを読み込む。

となります。


[Rails]

XMLを生成するためにREXMLを使用します。

REXMLについては脆弱性が発表がされておりますので、本サイト内の記事

REXMLの脆弱性」を参照し、脆弱性対策を行ってから使用して下さい。


まず、Rails側でXMLを生成します。

#Rails XML生成メソッド

def get_xml
  xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><data />\n"
  doc = REXML::Document.new( xmlString )
  #items
  items = REXML::Element.new("items", doc.root)
  i = 0
  10.times do
    item = REXML::Element.new("item", items)
    title = REXML::Element.new("title", item)
    title.text = "タイトル#{i}"
    value = REXML::Element.new("value", item)
    value.text = "hoge#{i}"
    i += 1
  end
  send_data doc.to_s, :type => 'text/xml', :filename => 'doruby.xml'
end

#doruby.xml

<?xml version='1.0' encoding='UTF-8'?>
<data>
<items>
  <item>
    <title>タイトル0</title>
    <value>hoge0</value>
  </item>
  <item>
    <title>タイトル1</title>
    <value>hoge1</value>
  </item>
  <item>
    <title>タイトル2</title>
    <value>hoge2</value>
  </item>

  ・・・(中略)・・・

  <item>
    <title>タイトル9</title>
    <value>hoge9</value>
  </item>
</items>
</data>

Rails側でのXML生成の作業は以上です。

次にFlash側でXMLを読み込みます。


[Flash(ActionScript)]


loadData(http://localhost:3000/"controller名"/get_xml);
//loadData("doruby.xml");

function loadData(filename) {
  xmlData = new XML();
  xmlData.ignoreWhite = true;
  xmlData.onLoad = loadingDone;
  xmlData.load(filename);
}

function loadingDone() {
  getData(xmlData);
  _root.nextFrame();
}

function getData(node) {
  items = node.firstChild.childNodes[0];
  _root._items = new Array();

  for (var i = 0; i<items.childNodes.length; i++) {
    _root._items[i] = new Object();
    for (var j = 0; j<items.childNodes[i].childNodes.length; j++) {
      node = items.childNodes[i].childNodes[j];
      if (node.nodeName == "title") {
        _root._items[i].title = node.firstChild;
      } else if (node.nodeName == "value") {
        _root._items[i].value = node.firstChild;
      }
    }
  }
}

_root._items[i].titleにアイテムのタイトル、_root._items[i].valueにアイテムの値を格納しています。

きちんと読み込まれているかどうか確認するには

下記のtraceアクション等でFlashの出力ウィンドウ上から確認できます。


for (var i = 0; i<_root._items.length; i++) {
  trace("_root._items["+i+"].title = "+_root._items[i].title);
  trace("_root._items["+i+"].value = "+_root._items[i].value);
}

以上、Ruby on RailsとFlash(ActionAcript)のXML連携について、ご紹介させていただきました。


次回は、Flash(ActionAcript)の"LoadVars.sendAndLoadメソッド"を使用した

Ruby on RailsとFlashの連携について書きたいと思います。

コメント (0)  |トラックバック (0)

ブックマークに追加する

トラックバック URL
この記事にコメントをする
ニックネーム:
メールアドレス:
URL:


.
web開発ならKBMJ
Rubyでのwebシステム開発は
実績豊富なKBMJにお任せ下さい
iPhone開発
iPhone開発は
KBMJにお任せ下さい
ファイル共有サービス DUB
クラウドファイル共有サービス「DUB」
オープンソースECパッケージ エレコマ
オープンソースECパッケージ
「エレコマ」

プロフィール

はる
はる
エンジニアの はる です。

会社・自宅共にiMacで開発をしています。

使用言語(スクリプト言語)は、主にRuby on Rails、Flex(ActionScript)、javascript等を使用しています。

最近チェックした記事

最新記事

アーカイブ

アクセスランキング

KBMJのWebソリューション
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ