XMLConnectorとDataBinding(1)
[コンポーネントの使い方]

前回の記事からXMLのロードに関することを色々調べていたのですが、
どうにもうまくいきません・・。
非公式テクニカルノート
http://www.fumiononaka.com/TechNotes/Flash/FN0311001.html

テスト環境で、試してはいるのですが・・。どうしたものやら。
そもそもDataBindingの資料がとっても少ないのが、なんとも。

[仕方ないので]

自力でやることに。

【用意したXML】
ダイアリーノートにはタグはかけない
http://keepers.web.infoseek.co.jp/cgi-bin/flash/sample.xml

【読み込み方】

流れは以下のとおり。

(1)XMLファイルをロードする。
var mainXML:XML = new XML();//XMLオブジェクトを作る
mainXML.onLoad = XMLLoaded;//イベントハンドラ指定
mainXML.load("sample.xml");//xmlファイルを読み込む

XMLファイルをロードするのは、XMLオブジェクト。
この時に、読み込み完了時のイベントハンドラを定義しておくこと。
データの編集はデータの読み込み完了後に行うため。

(2)XMLデータから、ノードを取り出す。

//XMLの全データをロード(rootNodeもXMLNodeオブジェクト)
var rootNode:XMLNode = new XMLNode();
//ルート直下のノードを配列の形で取り出す
//(中身はXMLNodeオブジェクト)
var elementNodes:Array = new Array();
//XMLロード完了時に呼び出されるメソッド
function XMLLoaded() {
    //XMLのルート(全データ)を取り出す(rootNodeもXMLNodeオブジェクト)
    rootNode = mainXML.firstChild;
    //ルートの直下のノードを配列の形で取り出す
    elementNodes = rootNode.childNodes;
    //順に表示
    //配列の中身に格納されているのは、XMLNodeオブジェクト
    for(var j = 0;j < elementNodes.length;j++)
    {
        trace(elementNodes[j].attributes.id);
        trace(elementNodes[j].attributes.country);
        trace(elementNodes[j].childNodes[0].firstChild);
        trace(elementNodes[j].childNodes[1].firstChild);
    }
}

各ノードを処理するのが、XMLNodeクラス。
XMLNode.childNodesで、そのノードの子ノード群を読み込むことができる。
ノードの内部の値を取り出すには、属性の値を取り出す形にするか、
子ノードの中を深くたどっていくかのどちらかの方法をとることになる。
こうやってアクセスしてみると、属性に設定したほうが感覚的にアクセスできそうな感じ。

とりあえず、サンプル的なものができた。
(仮
http://keepers.web.infoseek.co.jp/cgi-bin/flash/xml_dom_test.swf


【その他のポイント】

肝になるのは、下記の3点を、メインアクション中に追加すること。

・XML.prototype.ignoreWhite = true;

改行やタグを空白として読ませない。
改行やタグを有効にすることで、XMLファイルの記述が楽に。

・System.useCodepage = true;

Flash内部の処理を行う文字コードをShift-Jisに変更することで、
日本語での外部ファイルの読み込みを可能にする。
(通常はUTF-8で読まれる。)
余談ではあるが、
最近UTF-8で書いたXMLをActiveXで操作しようとしたことがあり、
その際に、と宣言しているのに、
UTF-8で保存していたことから、表示できないといわれて死に掛けた記憶が。

・XMLの読み込み完了後でないと、データの編集はできないこと。

onLoadイベントハンドラ内にデータの編集を記述すること。
これをしないで、フレームのロード時にデータを編集するメソッドを発行しても、
フレームのロードと同期が取られていないので、データを利用することができない。

ということで、微妙に続く。

(参考)非公式テクニカルノート
http://www.fumiononaka.com/TechNotes/Flash/FN0509002.html


[余談]

配列を書いてみたら、[アイ(Iのこと)]の部分が斜体のタグに変換されて驚いた。
ダイアリーノートの変わった仕様ですな。

コメント

最新の日記 一覧

<<  2025年6月  >>
1234567
891011121314
15161718192021
22232425262728
293012345

お気に入り日記の更新

最新のコメント

日記内を検索