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;
}