JavaScript(greasemonkey)内でXPathを使う方法

Greasemonkeyで、自分用のカスタマイズmyconfig.user.jsというのを利用しているのだが、その中でXPathを利用出来ないかなと思っていたところ、使う方法がわかったので書いておく。
参考にしたのは下記のサイト
Introduction to using XPath in JavaScript - MDC

<div class="message">〜</div>

という要素にアクセスする場合は以下のように書く。

var div = document.evaluate('//div[@class="message"]', document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (i=0; i<div.snapshotLength; i++) {
	str = div.snapshotItem(i).innerHTML
	str = str.replace(/^(ttp:\/\/.*?)(<br>)/ig, "<a href=\"h$1\">$1</a>");
	div.snapshotItem(i).innerHTML = str;
}

これで、XPathが利用出来る。

document.evaluate('XPath', 起点となるノード, 名前空間, 返値のタイプ・型, 結果をどうするか);
  • 起点となるノード:大体documentでいい。〜などが必要なければ、document.bodyなどにする。
  • 名前空間:通常はnullで良さそう
  • 返値の型:ループするなら型はORDERED_NODE_SNAPSHOT_TYPEが良さそう
  • 結果をどうするか:nullにすると新しいXPathResultオブジェクトが生成される。既存のオブジェクトを使うならそれを指定。nullにしとけば良さそう。