@Shimpanze

XPath: как найти узел?

Добрый день!

Как найти прямых потомков элемента (включая текстовые узлы, содержащие в себе строчные теги) элемента?

Примерный пример, было:

<div id="orion">
  Lorem ipsum <i>dolor</i> sit amet.
  Lorem <b>ipsum</b> dolor sit amet.

  <p>Lorem ipsum dolor sit amet.</p>

  <span>Lorem ipsum dolor sit amet.</span>
</div>


Примерный пример, стало:

<div id="orion">
  <p>
    Lorem ipsum <i>dolor</i> sit amet.
    Lorem <b>ipsum</b> dolor sit amet.
  </p>

  <p>Lorem ipsum dolor sit amet.</p>

  <p>
    <span>Lorem ipsum dolor sit amet.</span> Lorem ipsum dolor sit <span>amet</span>.
  </p>
</div>


Использую функцию со следующей осью:

$dom = new DOMDocument;
$dom->loadHTML( '$html' );
$xpath = new DOMXPath( $dom );

foreach ( $xpath->query( '//div/text()[i][b][span] | //div/node()' ) as $textNode ) {
  echo trim( $textNode->nodeValue ), PHP_EOL;
}


Не в какую не работает. Хотя согласно документации, я ему чёрным по русскому говорю, - разрешаю, мол, тебе, использовать текстовые узлы, в которых есть строчные теги: text()[i][b][span].

Как заставить его работать?

Спасибо!
  • Вопрос задан
  • 376 просмотров
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
что нужно, я не понял, но посмотри на такое

('//div[@class="class-name"][h3[a[text()="'+text+'"]]]/following-sibling::small/strong/text()')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы