Если я правильно понимаю ваш вопрос, он сработал, когда я использовал выражение потомок ::.Попробуйте это:
foreach ($nodelist as $n) {
$other_nodes = $xpath->query('descendant::div[@class="some-descendant"]', $n);
echo $other_nodes->length;
echo $other_nodes->item(0)->nodeValue;
}
Хотя иногда достаточно просто объединить запросы, используя // выражение пути для сужения поиска.// Выражение пути выбирает узлы в документе, начиная с текущего узла, соответствующего селектору.
$nodes = $xpath->query('//div[@class="some-descendant"]//div[@class="some-descendant-of-that-descendant"]');
Затем выполните цикл по тем элементам, которые вам нужны.Надеюсь, это поможет.