25

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

public __construct ( DOMDocument $doc )

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

问题是,我需要搜索一个相对于DOMElement.

我试过这样做:

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

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

4

1 回答 1

37

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

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

已解决意味着,如果 xpath 是:

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

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

DOMXpath::query()

于 2013-05-03T18:35:30.267 回答