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();
}