XPathからノードを取得

XPathから要素を取得するには、document.evaluateメソッドを使用します。

  • ※ IEはすべてのバージョンで対応していません。

構文

var result = document.evaluate(
	xpath,
	currentElement,
	namespacePrefix,
	returnType,
	xpathResult
);

引数

引数名 説明
第一引数
必須
xpath string XPath文字列
第二引数
必須
currentElement Element 開始する要素
第三引数 namespacePrefix stirng 名前空間の接頭辞
第四引数 returnType number 戻り値の種類
第五引数 xpathResult XPathResult 既に存在するXPathResult

"戻り値の種類"の設定可能値

第四引数の"戻り値の種類"で設定可能な値は次の通りです。
なお、第四引数で指定するのは定数です。

定数 説明
XPathResult.ANY_TYPE 0 種類を問わず自動判別して全て返す
XPathResult.NUMBER_TYPE 1 数値として返す(count関数で得た結果など)
XPathResult.STRING_TYPE 2 文字列として返す(string関数で得た結果など)
XPathResult.BOOLEAN_TYPE 3 Boolean値として返す(not関数で得た結果など)
XPathResult.UNORDERED_NODE_ITERATOR_TYPE 4 全てのノードを返す(必ずしも文書と同じ順序とは限らない)
XPathResult.ORDERED_NODE_ITERATOR_TYPE 5 全てのノードを返す(文書と同じ順序)
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE 6 全てのノードのスナップショットを返す(必ずしも文書と同じ順序とは限らない)
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE 7 全てのノードのスナップショットを返す(文書と同じ順序)
XPathResult.ANY_UNORDERED_NODE_TYPE 8 1つのノードを返す(必ずしも文書と同じ順序とは限らない最初のノード)
XPathResult.FIRST_ORDERED_NODE_TYPE 9 1つのノードを返す(文書と同じ順序)

ノードとスナップショットの違い

ノードは、得たノードが何かしら変更された場合、得たノードは変更された結果となりますが、スナップショットは得たノードの変更があっても、得たノードは変更されません。

戻り値

XPathResultオブジェクトを返します。

サンプルコード

JavaScript

var result = document.evaluate('//p', document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);

// 最初の要素を取得
var thisElem = result.iterateNext();

// 要素がなくなるまで繰り返す
while (thisElem) {
	console.log(thisElem.textContent);

	// 次の要素を取得
	thisElem = result.iterateNext();
}

JavaScript逆引きリファレンス一覧へ戻る