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);する。

importcom.xfactorstudio.xml.xpath.*;

//initalize

varxml:XML=newXML();

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(“XMLloadsuccess!!”);

selectButton.enabled=true;

}

else{

showMessage(“XMLloaderror!!”);

selectButton.enabled=false;

}

showMessage(“inputXPath”);

}

loadButton.onRelease=function(){

showMessage(“loading…”);

xml.load(uriLabel.text);

}

selectButton.onRelease=function(){

showMessage(“selectingXPath…”);

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

showMessage(“—-resultstart—-“);

showMessage(nodes);

showMessage(“—-resultend—-“);

}

clearButton.onRelease=function(){

resultTextArea.text=””;

}

functionshowMessage(str:Object){

trace(str);

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

}