在给定元素下按 XPath 搜索

2022-08-30 17:11:15

我知道在PHP中对DOM执行XPath查询的唯一方法是DOMXPath,它仅适用于:DOMDocument

public __construct ( DOMDocument $doc )

是否有类似的机制来相对于 DOMElement 进行搜索?

问题是,我需要搜索一个abrary XPath(我无法控制)相对于一个.DOMElement

我尝试过:

$domElement->getNodePath() . '/' . $xPath;

但是,如果 XPath 包含(字符),则此方法不起作用。|


答案 1

是的,有。该元素也是文档的一部分,因此您使用文档的 xpath 对象,但是当您运行查询时,还有第二个参数,它是第一个参数中的查询解析为的上下文节点:

// query all child-nodes of $domElement
$result = $xpath->query('./*', $domElement);

已解析意味着,如果 xpath 为:

  1. 相对,它是相对于该上下文节点的。$domElement
  2. 绝对,它解析为文档节点(静止/再次)。

这里只有相对路径适用于上下文,这就是为什么我在前面加上一个点的前缀:.一个简单的方法也可以,只是不会让它特别可见。./**

请参阅 DOMXpath::query()


答案 2

推荐