|
|
1
59
如果将“不是后代”转换为“没有祖先”,则得到表达式
|
|
|
2
18
Jarnbjo指出了实现这一点的直观方法
但是,如果您有一个非常大的文档,它可能会非常低效。这是一个非常昂贵的问题。它告诉xpath处理器访问文档中的每个节点,并检查其祖先节点是否存在名为x的元素。虽然xpath处理器足够智能,可以知道它不需要访问x的后代来评估该查询,但不太可能。 如果您有一些关于x元素在哪里的信息,并且非常小心,那么您可以编写一个更有效的查询。例如,如果x是顶级元素的子元素,并且它有很多子元素,那么这将更快:
这将查找顶级元素、它的所有直接子元素以及它的任何未命名X的直接子元素的后代。它不会检查X的任何后代。 同样,如果您知道x接近树的底部,则此查询可能更有效:
因为它不会检查它测试的每个节点的整个祖先轴,只检查最后三个元素。(除非XPath处理器足够笨,在执行使用的测试时可以检查轴上的每个节点
不过,正如我所说,大多数时候,最简单的版本会是最好的,而大多数时候,它是我自己使用的。 |
|
|
JobProcessTask · 如何读取此xpath表达式? 3 年前 |