Flash - XPath4AS2でXPathテスター

XPath4AS2を使うとFlashでもXPathでXMLをパースできる。trick7.com blog: xfactorstudioのXPath4AS2の使い方を参考にして、XPathテスターを作ってみた。

これを改造して10行ぐらい足すと、FlickrAPIから写真を読むフォトビューアーが作れる。

Loadボタン押すとXMLを読み込む。XPath入力してSelectボタンを押すと結果が表示される。



SourceCode(Flash8), Archive

(XPath4AS2にクラスパスが通ってないとコンパイルできません)

XPathを「//」で全部表示、「rss/channel/item/title/text()」で各記事のタイトルだけ表示、「rss/channel/item[1]/description/text()」で1つ目の記事の本文を表示する。

[数字]で配列風にアクセスできるけど、インデックスが0からではなく1から始まるのが注意。

C#のXPathとは違ってルートに/を入れない。C#だと「/rss/channel/item/title」で各記事のタイトルになる。

■XPathの例

trick7さんのfoodData.xmlのサンプルからまとめた

■XMLのサンプル

いくつか用意してみた。

FlickrAPI形式

trick7さんのfoodData.xmlのサンプル

s.h.logのRSS



■コード

40行ぐらいでできた。

新しいXMLオブジェクトを作って、load(url)して、XPath.selectNodes(xml, xpath);する。

import com.xfactorstudio.xml.xpath.*;

// initalize

var xml:XML = new XML();

xml.ignoreWhite = false;

selectButton.enabled = false;

uriLabel.text = ”http://web.sfc.keio.ac.jp/~shokai/index.xml”;

xml.onLoad = function(success:Boolean) {

    if(success){

        showMessage(”XML load success!!”);

        selectButton.enabled = true;

    }

    else{

        showMessage(”XML load error!!”);

        selectButton.enabled = false;

    }

    showMessage(”input XPath”);

}

loadButton.onRelease = function(){

    showMessage(”loading…”);

    xml.load(uriLabel.text);

}

selectButton.onRelease = function(){

    showMessage(”selecting XPath…”);

    var nodes:Array = XPath.selectNodes(xml, xpathLabel.text);

    showMessage(”—-result start—-”);

    showMessage(nodes);

    showMessage(”—-result end—-”);

}

clearButton.onRelease = function(){

    resultTextArea.text = ”";

}

function showMessage(str:Object){

    trace(str);

    resultTextArea.text = str + ”¥n” + resultTextArea.text;

}

タグ:

コメントをどうぞ