HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6</head> 7<body> 8 1 9 <div> 10 2 11 <div> 12 3 13 </div> 14 </div> 15</body> 16</html>
上のようなHTMLがあったとして、
JavaScript
1document.evaluate("//text()", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
のようにすると全てのテキストノードが取得できます。
ここで、bodyの子孫の全てのテキストノードを取得しようとしたとき、document.evaluateは第二引数に指定したノードより下で検索をすると聞いたので、
JavaScript
1document.evaluate("//text()", document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
としました。
しかし、期待に反してbodyの子孫ではないタイトル
テキストノード(title要素直下のやつ)まで取得されてしまいます。
これは、document.evaluateの第二引数の理解が間違っているのか、それとも//text()
というXPathに問題があるのか、それとも他の部分がおかしいのか、というのを知りたいです。
なお、あくまでdocument.evaluateやXPathの挙動について勉強したいだけで、bodyの子孫のテキストノードを取得したいがdocument.evaluate以外の方法も思いつかず困っているというわけではありません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/08 05:31