- OpenLaszlo紹介
- プログラム構造関連
- スクリプト
- Javascript基礎
- 基礎知識
- ビュー<view>
- レイアウト
- 動かす
- 入力デバイス
- 文字
- 数値
- 日付
- オブジェクト指向
- 標準コンポーネント
- データの扱い
- データ操作(基礎)
- 応用編
–
XMLデータのなかから個々のデータを取り出すにはデータポインタを使います。データパスと違ってデータポインタは一つのデータのみを指定します。
下記はデータポインタを使って全データを表示した例。XMLデータからいったん取り出した値をアプリ全体で使いまわしたいときは<canvas>直下に<attribute>を配置して、そこに値を代入しておけばOKです。
(OpenLaszlo4.6.1/swf8)
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <text id="txt" multiline="true"/> <dataset name="ds" > <data sei='織田' mei='信長'/> <data sei='豊臣' mei='秀吉'/> <data sei='徳川' mei='家康'/> </dataset> <datapointer xpath="ds:/"> <handler name="ondata"> this.selectChild(); do{ var sei = this.xpathQuery('@sei'); var mei = this.xpathQuery('@mei'); this.disp(sei + mei); }while(this.selectNext()); </handler> <method name="disp" args="d"> txt.addText("こんにちは" + d + "さん\n"); </method> </datapointer> </canvas>
◆上記コードのプチ解説:
<dataset name="ds" >・・・・・・・・・(1)
<data sei='織田' mei='信長'/> ・・・(2)
<data sei='豊臣' mei='秀吉'/> ・・・(3)
<data sei='徳川' mei='家康'/> ・・・(4)
</dataset>
上記XMLデータに対するデータポインタの動きは、
<datapointer xpath="ds:/"> ・・・【XMLデータdsのルートつまり(1)を指す】
<handler name="ondata">
this.selectChild(); ・・・・【XMLデータの階層を一つ下がる。つまり(2)を指す】
do{
var sei = this.xpathQuery('@sei'); ・・・【sei属性値を取得】
var mei = this.xpathQuery('@mei'); ・・・【mei属性値を取得】
this.disp(sei + mei);・・・・・・・・・・【sei+meiを引数として、dispメソッドを実行】
}while(this.selectNext()); ・・・・・・・・【XMLデータの同一階層の次のデータに移動。つまり今が(2)なら(3)へ】
</handler>
・
・
・
</datapointer>
* selectChild()、selectParent()はXMLデータ階層の親子方向のポインタ移動。
* selectNext()、selectPrev()はXMLデータ階層の兄弟方向のポインタ移動。