FlashでXML文書を操作する時、いちいちfirstChild.childNodes[0]...などとノードを辿っていくのは馬鹿馬鹿しい。FlashでもXPathを使えたような気がしないでもなかったなあ。 と気になってXPathのクラスファイルを探してたら、なあんだ、XPathを使えるじゃないか、Flash MX 2004で!ぺろっとインポートするだけで使えるんです。
import mx.xpath.XPathAPI;
var rssfeed_xml = new XML();
rssfeed_xml.ignoreWhite = true;
rssfeed_xml.load("http://bitmap.dyndns.org/blog/index.rdf");
rssfeed_xml.onLoad = function(success) {
if (success) {
var titlePath:String = "/rdf:RDF/item/title";
title_array = mx.xpath.XPathAPI.selectNodeList(this.firstChild, titlePath);
for (var i = 0; i<title_array.length; i++) {
trace(title_array[i].firstChild.nodeValue);
}
} else {
trace("error loading XML");
}
};
var rssfeed_xml = new XML();
rssfeed_xml.ignoreWhite = true;
rssfeed_xml.load("http://bitmap.dyndns.org/blog/index.rdf");
rssfeed_xml.onLoad = function(success) {
if (success) {
var titlePath:String = "/rdf:RDF/item/title";
title_array = mx.xpath.XPathAPI.selectNodeList(this.firstChild, titlePath);
for (var i = 0; i<title_array.length; i++) {
trace(title_array[i].firstChild.nodeValue);
}
} else {
trace("error loading XML");
}
};
出力したら、しっかりとこの blog の EntryTitle だけリストアップ出来ました。すごい!
追記
上記APIはXML関連のコンポーネントがライブラリに無いと使えない(?)ようなので、 http://www.xfactorstudio.com/ のパッケージを使ったほうが良いかも知れない。