Поиск по XPath под заданным элементом

Единственный способ, которым я знаю в PHP для выполнения запроса XPath в DOM, – это DOMXPath , только работающий с DOMDocument :

 public __construct ( DOMDocument $doc ) 

Есть ли аналогичный механизм для поиска относительно DOMElement ?

Проблема заключается в том, что мне нужно искать abritrary XPath (который я не контролирую) относительно DOMElement .

Я попытался сделать:

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

Но если XPath содержит | ( или символа), этот подход не работает.

Да, есть. Элемент также является частью документа, поэтому вы используете объект xpath документа, но когда вы запускаете запрос, есть второй параметр, который является контекстным узлом, к которому запрос в первом параметре относится к:

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

См. DOMXpath::query() .