このページの本文へ

Adobe BridgeのJavaScriptでXMLを操作しよう (2/4)

2010年01月25日 16時55分更新

文●古籏一浩

  • この記事をはてなブックマークに追加
本文印刷

XMLデータを解析する

 new XML()によりXMLオブジェクトが生成されましたので、次にサンプル01のXMLデータを解析してみます。WebブラウザーのJavaScriptでは、XMLデータの解析はgetElementById()やgetElementsByTagName()などのメソッドを使いますが、Bridgeにはそのようなメソッドは用意されていません。firstChildやlastChildなどもありません。

 Bridgeではchild()を使うか、タグ名を直接指定してJavaScriptの配列形式でノードに対してアクセスします。サンプル01で生成したXMLオブジェクトの最初にあるtitle要素に対して、child()でアクセスするには以下のように書きます。


testXML.child(0).child(0)


 戻り値はXMLオブジェクトです。テキストとして処理するには、文字列と連結するかtoString()を使って文字列に変換する必要があります。

 一方、child()を使わずに直接XMLタグ名を指定する場合は、以下のように記述します。


testXML.data[2].contents[0].child(0)


 今回のXMLデータの場合は以下のように記述しても結果は同じです。上の記述に比べておおよそ20%ほど処理速度が向上しますので、少しでも解析速度を上げたいときはこの方法がよいでしょう。


testXML.data[2].contents


 なお、XMLタグ名での指定よりもchild()を使った方が4倍ほど高速に処理できます。Bridgeでどの程度までのXMLデータを解析するかにもよりますが、処理が遅い場合は書き方を変えて試してみてください。

 ここまでの処理をまとめたものがサンプル02です。サンプル03はlength()メソッドを使ってデータ項目の数を求めています。

サンプル02の実行結果。XMLデータのタイトルと内容が表示されます

サンプル03の実行結果。タグの数が表示されます


●サンプル02


#target "Bridge"
text = '<?xml version="1.0" encoding="UTF-8" ?>';
text += '<list>';
text += '<data><title>Sample1</title></data>';
text += '<data><title>Sample2</title></data>';
text += '<data><title>Sample3</title><contents>ASCII.jp</contents></data>';
text += '</list>';
testXML = new XML(text);
var titleText = testXML.child(0).title[0].child(0);
alert(titleText.toString());
var cont = testXML.data[2].contents[0].child(0);
alert(cont.toString());



●サンプル03


#target "Bridge"
text = '<?xml version="1.0" encoding="UTF-8" ?>';
text += '<list>';
text += '<data><title>Sample1</title></data>';
text += '<data><title>Sample2</title></data>';
text += '<data><title>Sample3</title><contents>ASCII.jp</contents></data>';
text += '</list>';
testXML = new XML(text);
var n = testXML.data.length();
alert(n);



※WebブラウザーのJavaScriptではlengthプロパティですが、Bridgeの場合length()メソッドになります。

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています