当前位置: 首页 > 知识库问答 >
问题:

javascript - Xpath 解析中上下文节点的作用是什么?

谭凯
2023-07-15
<!DOCTYPE html><html lang="zh-CN"><head>  <meta charset="UTF-8"></head><body>  <div>    hello world    <span>你好世界</span>    <span>你好世界</span>  </div></body></html>

执行下面的代码

const xPathEvaluator = new XPathEvaluator()const expression = xPathEvaluator.createExpression('/html/body')console.log(expression.evaluate(document.querySelector('div')).iterateNext())console.log(expression.evaluate(document).iterateNext())

evaluate 方法中第一个参数是上下文节点,以上执行的结果是相同的,都是 body 元素,请问一下这个上下文节点参数的作用是什么?

共有1个答案

邵畅
2023-07-15

evaluate 方法的第一个参数传递给了该表达式。这个上下文节点参数指定了 XPath 表达式执行的 起始点 或者搜索的范围。

只不过在题主这个例子中,刚好 不会 体现出变化

如果将上下文节点设置为 document.querySelector('div'),则表示从 div 元素开始执行 XPath 表达式。因此,在这种情况下,expression.evaluate(document.querySelector('div')).iterateNext() 的结果是 body 元素。

  • 首先,document.querySelector('div') 选择了文档中的 div 元素作为上下文节点
  • 然后,由于 div 内部没有 html 元素,因此无法匹配到 /html/body 这个路径。但是,在这种情况下,XPath 解析器会 自动向外 扩展搜索范围,并从整个文档的 根元素 开始进行搜索。因此,在最终结果中可以找到匹配 /html/body 的第一个符合条件的节点,也就是 body 元素

如果将上下文节点设置为 document,则表示从整个文档开始执行 XPath 表达式。所以 expression.evaluate(document).iterateNext() 的结果也是 body 元素。

可以看到,在题主的例子中,无论上下文节点是哪个元素( divdocument),XPath 表达式都会返回相同的结果 body 元素。因为/html/body 这个表达式本身就选择了 body 元素作为目标。

分析半天,还是 DOM 操作香啊

 类似资料:
  • 我的源XML文档 根据元素内容的模式,在元素中的元素中,我希望添加一个新的元素。元素是前导信息。因此,首先,我必须创建一个新的元素及其和内容。之后,我必须创建一个相应的元素,该元素具有相同的内容和特定的内容。 这是我的目标XML文档的示例(添加param03): 我的XSLT文档 结果XML文档错误 我遇到的问题: > 使用不会按预期更改节点上下文。新的元素将在最后一个位置添加到元素中,而不是按照

  • 我一直在用PHP的SimpleXMLIterator处理XML数据。 在迭代一个子树(

  • 本文向大家介绍深入浅析JavaScript中的作用域和上下文,包括了深入浅析JavaScript中的作用域和上下文的使用技巧和注意事项,需要的朋友参考一下 javascript中的作用域(scope)和上下文(context)是这门语言的独到之处,这部分归功于他们带来的灵活性。每个函数有不同的变量上下文和作用域。这些概念是javascript中一些强大的设计模式的后盾。然而这也给开发人员带来很大困

  • 问题内容: 我的头衔几乎概括了这一切。 谁能启发我… “ JavaScript中的“执行上下文”是什么?” 以及它与“ this”,吊装,原型链,作用域和垃圾收集之间的关系? 问题答案: 您要问的是几个密切相关的不同概念。我将尝试简要地解决每个问题。 执行上下文 是语言规范中的一个概念,用外行的术语来说,大致等同于函数执行的“环境”。也就是说,变量作用域(以及 作用域链 ,外部作用域的闭包中的变量

  • 在本章中,我们将详细介绍XPath表达式,其中包括常见的节点类型,XPath定义和句柄。 序号 节点类型 描述 1 Root XML文档的根元素节点。 2 Element 元素节点。 3 Text 元素节点的文本。 4 Attribute 元素节点的属性。 5 Comment 注释

  • 问题内容: 我正在尝试从这样的站点地图中提取URL:https : //www.bestbuy.com/sitemap_c_0.xml.gz 我已经解压缩并将.xml.gz文件另存为.xml文件。结构如下: 我正在尝试使用ElementTree提取整个文件中 loc 节点内的所有URL ,但仍在努力使其正常工作。 根据文档,我正在尝试这样的事情: 但是,没有任何东西可以载入价值。我的目标是提取lo