首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用document.evaluate()和XPath获取元素列表?

如何使用document.evaluate()和XPath获取元素列表?
EN

Stack Overflow用户
提问于 2016-03-30 08:47:00
回答 5查看 43.9K关注 0票数 42

我使用document.evaluate() JavaScript方法获取XPath表达式指向的元素:

代码语言:javascript
复制
var element = document.evaluate(
  path,
  document,
  null,
  XPathResult.FIRST_ORDERED_NODE_TYPE,
  null
).singleNodeValue;

但是,如果XPath表达式指向页面上的多个元素,我如何获得元素列表?

我尝试了以下代码,但它不起作用:

代码语言:javascript
复制
var element = document.evaluate(
  path,
  document,
  null,
  XPathResult.ORDERED_NODE_ITERATOR_TYPE,
  null
);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-04 19:35:22

我在当前阅读的中找到了以下解决方案。它说代码来自原型库

代码语言:javascript
复制
function getElementsByXPath(xpath, parent)
{
    let results = [];
    let query = document.evaluate(xpath, parent || document,
        null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (let i = 0, length = query.snapshotLength; i < length; ++i) {
        results.push(query.snapshotItem(i));
    }
    return results;
}

像这样使用它:

代码语言:javascript
复制
let items = getElementsByXPath("//*"); // return all elements on the page
票数 58
EN

Stack Overflow用户

发布于 2017-01-18 11:31:07

从文件中

代码语言:javascript
复制
var iterator = document.evaluate('//phoneNumber', documentNode, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null );

try {
  var thisNode = iterator.iterateNext();

  while (thisNode) {
    alert( thisNode.textContent );
    thisNode = iterator.iterateNext();
  } 
}
catch (e) {
  dump( 'Error: Document tree modified during iteration ' + e );
}
票数 8
EN

Stack Overflow用户

发布于 2020-06-30 13:48:37

试试这个:

代码语言:javascript
复制
function getListOfElementsByXPath(xpath) {
    var result = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null);
    return result;
}

那就叫它:

代码语言:javascript
复制
var results = getListOfElementsByXPath("//YOUR_XPATH");
while (node = results.iterateNext()) {
     console.log(node);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36303869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档