2008年04月05日

firefox拡張機能でXMLファイルの読み込み

Firefox拡張機能でローカルマシンのXMLファイルを利用したかったので調べてみました。

ネットで調べた結果、XMLHttpRequestを利用するのが一番良さそうだったので、簡単なテストプログラムを作成してみました。テストプログラムは以下のようになります。
getXMLData: function() {
var req = new XMLHttpRequest();
req.open('GET', 'file:///d:/firefox/test.xml', false);
req.send(null);
if (0 != req.status) {
// XMLファイルの読み込みに失敗
return;
}

var results = this.evaluateXPath(req.responseXML, "library/category");
for(var i in results) {
//属性は results[i].value で取得
//要素は results[i].textContent で取得
}
},

evaluateXPath: function(aNode, aExpr) {
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver(aNode.ownerDocument == null ?
aNode.documentElement : aNode.ownerDocument.documentElement);
var result = xpe.evaluate(aExpr, aNode, nsResolver, 0, null);

var found = [];
var res;
while (res = result.iterateNext()) {
found.push(res);
}
return found;
}

注. この例では、Dドライブの \firefox\test.xml ファイルを読み込んでいます。

XMLHttpRequestでXMLファイルを読み込むには、HTTPリクエストでWEBサーバーから取得する方法と、ローカルマシンからファイルとして取得する2つの方法が利用できます。今回はローカルマシンのファイルだけを対象としているので、
req.open('GET', 'file:///d:/firefox/test.xml', false);

となり、正常にXMLファイルを開けたときは
req.status = 0
となります。
注. HTTPリクエストの場合は、req.status = 200 となります。

正常にXMLファイルが開けた後は、そのデータからXPathEvaluatorを使って必要なデータを取り出し、処理します。テストプログラムでは XPathで”library/category"と指定していて、これはlibrary要素の子要素であるcategory要素を全て取得するということです。

参考
http://developer.mozilla.org/ja/docs/XMLHttpRequest
http://developer.mozilla.org/ja/docs/Using_XPath
posted by jun1 at 01:05| Comment(0) | TrackBack(0) | firefox
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/13590528

この記事へのトラックバック