« ブログンをスタートしてみました。 | メイン | ついに浜松に引っ越してきました。 »
2005年03月26日
FlashでXML
Flash5からXMLが扱えるようになっても、なかなか使う機会の無いXML。でも仕事の関連でちょっと勉強することに・・・。それで整理してみました。
---[基本的なXMLファイルの読み込みActionScript]----------------------
myxml = new XML();
myxml.load("dealers.xml");
myxml.onLoad = LoadXML;
function LoadXML(success) {
if (success == true) {
rootNode = myxml.firstChild;
totalNode = rootNode.childNodes.length;
secondNode = rootNode.firstChild.nextSibling;
Zokusei = secondNode.attributes.URL;
Atai = secondNode.firstChild.firstChild.nodeValue;
}
}
myxml.ignoreWhite = true;
------------------------------------------------------------------------------
---[dealer.xmlファイル]---------------------------------------------------
<dealers>
<dealer URL="http://www.hogehoge.com/taiwan">
<name>台湾</name>
<details>台湾の代理店について</details>
</dealer>
<dealer URL="http://www.hogehoge.com/singapore">
<name>シンガポール</name>
<details>シンガポールの代理店について</details>
</dealer>
<dealer URL="http://www.hogehoge.com/newzea">
<name>ニュージーランド</name>
<details>ニュージーランドの代理店について</details>
</dealer>
</dealers>
------------------------------------------------------------------------------
上のAction Scriptはだいたいメイン1フレーム目に仕込んでおきます。
その下の「dealer.xml」というXMLファイルを読み込んでいます。
「LoadXML」というカスタムコマンドでXMLファイルから取得した値を各変数に入れています。
その他変数をダイナミックテキストで表示させてやると分かりやすいです。
最後の「myxml.ignoreWhite = true;」はちゃんとXMLを読み込むためのおまじない。何故かFlashでは空白や改行をノードと考えてしまうらしいので、それをしない為の文言です。
[FlashでのXMLコマンド?解説]
1.firstChild:最初の子供(そのままやん)
上の例でいえば・・・
rootNode.firstChildというのは、
<dealer URL="http://www.hogehoge.com/taiwan">
<name>台湾</name>
<details>台湾の代理店について</details>
</dealer>
を表します。
2.childNodes:子供ノード
rootNode.childNodesとは、
台湾、シンガポール、ニュージーそれぞれの<dealer>~</dealer>を表し、
rootNode.childNodes.lengthとは、
<dealer>~</dealer>がいくつ存在するのかを表します。今回の例で言えば、台湾、シンガポール、ニュージーの3つなので返す値は「3」となります。
3.nextSibling:その次のノード
rootNode.firstChild.nextSiblingであれば、
firstChild...台湾の次なのでシンガポール、
<dealer URL="http://www.hogehoge.com/singapore">
<name>シンガポール</name>
<details>シンガポールの代理店について</details>
</dealer>
を表します。ちなみに戻る場合は[previousSibling]です。
4.attributes.[属性名](今回では attributes.URL)で属性値を返します。
secondNode.attributes.URLであれば、「http://www.hogehoge.com/singapore」を返します。
5.nodeValue:ノードの値です。
secondNode.firstChild.firstChild.nodeValueであれば、シンガポールの最初の子供ノード「<dealer>」のさらに最初の子供ノード「<name>」の値、つまり「シンガポール」を返します。
[変数について]
rootNode:一番上の階層のタグ(ルート)ここでは、<dealers>~</dealers>。
totalNode:rootNodeの子供ノード、ここでは<dealer>~</dealer>の数。3店舗分なので「3」。
secondNode:rootNodeの最初の子供ノード(台湾代理店)の次のノード、つまりシンガポール代理店分の<dealer>~</dealer>までを表します。
Zokusei:secondNodeの属性「URL」の属性値。
Atai:secondNodeの最初の子供ノードのそのまた最初の子供ノード、ここでは<name>タグの値。
参考URL:マクロメディア
--------
投稿者 kuroda : 2005年03月26日 00:00
トラックバック
このエントリーのトラックバックURL:
http://www.k1factory.biz/blog/mt-tb.cgi/124