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;
}
タグ: Tech