今まで独自で拡張したXMLクラスでXMLの処理をしていたのだけど、まぁ世の中の時流にのってみようと思い、E4X(PDF)に手を出してみた。
で、はまった。
たとえば
こんなXMLを読み込んだとしてitemノードのattributes名が不確定の場合、これまではこのノードのattributes(Object)を取得してfor in でぶん回せば属性名と属性値を取得できたのだけど、E4Xで取得したXMLListだとちと違う。
たとえば
これだと
っツー感じ。つまりObjectではなくなんちゃってArray(lengthも使えるのだけど、プロパティでは無くmethodになってる)
ということで名前は”name”でList内に格納されているのだけど、これがまた何故かmethod(いや、XMLを走査するわけだから何故かでもないんだけど・・。)
ということで正解は
で疑問なのはこのやり方は早いのか?っツーことぐらいかな・・・。
Objectに一度変換してとり回しした方が早いようなきもするけどAVM2だと関係ないのか?
(setter使ったって実質内部でmethodな訳だし変わらない?)
なんかこれやるんだったら、value()とかのメソッドがあるとオデの頭では理解しやすいのだけど、まぁノードも属性も一括で管理しているから、その辺でのつじつまなんだろうな・・。
まぁこれまで使ってきたものとあまりに使い勝手が違うのでまだ違和感あるけど、
ノード名、属性名などがきちんと分かっている情報に対してのアクセスはとても簡単。
判定条件を内包できるもの素敵です。
最近JSONばっかりで、久しぶりにXMLを触ってはまったっつーことで、とりあえずメモ。
あ、ちなみに
var _attr = myXML.item[0].attributes();
は
var _attr = myXML.item[0].@*;
でもいいです。こっちで書くとなんかかっこいい気がする。

大人の科学マガジン Vol.17 ( テルミン )
Amazon.co.jp: いやだいやだの絵本 4冊セット: せな けいこ: 本
Amazon.co.jp: あーんあん: せな けいこ: 本
Amazon.co.jp: おばけのてんぷら (めがねうさぎの小さな絵本): せな けいこ: 本
Amazon.co.jp: めがねうさぎ (めがねうさぎの小さな絵本): せな けいこ: 本
Amazon.co.jp: きれいなはこ (あーんあんの絵本 4): せな けいこ: 本
Amazon.co.jp: ルルちゃんのくつした (あーんあんの絵本 3): せな けいこ: 本
Amazon.co.jp: ゆうれいとすいか (ひかりのくに傑作絵本集 (5)): くろだ かおる,せな けいこ: 本
Amazon.co.jp: 明日の広告 変化した消費者とコミュニケーションする方法 (アスキー新書 045) (アスキー新書 45): 佐藤 尚之: 本