Xpath получает только текстовый узел, а не другие узлы элемента

У меня есть следующая структура:

<div class="xGh">
<div class="xg1">
<div>I need that text<br><br>
<span>That no</span><br>
<span>Nope</span>
</div>
</div>
</div>

я пытаюсь это:

<?php
$xg1 = $xpath->query('//div[@class="xg1"]/*[1]');

for($i = 0; $i < $xg1 ->length; $i++)
{    echo "xg1  :".$xg1->item($i)->nodeValue."<br/>";
}
?>

Проблема, которая возвращает весь текст с другим текстом, например:

xg1 : I need that textThat noNope

Я нуждаюсь:

xg1 : I need that text

Извини мой плохой английский

1

Решение

Все, что вам нужно сделать, это нормализовать все пробелы для text() дочерние узлы вашего первого ребенка (div).

Это должно сделать

$xg1 = $xpath->query('//div[@class="xg1"]/*[1]/text()[normalize-space()]');

Это должно дать вам один DOMText узел в DOMNodeList,

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector