@Shimpanze

XPath: как отсечь пустые текстовые узлы?

Здравствуйте!

Составил выражение собирающее все текстовые узлы:

'//body/div/text()'

но оно собирает и все пустые текстовые узлы. Пытаюсь отсечь их таким образом:

'//body/div/text()[not(normalize-space(text())='')]'


но не в какую не работает.

Подскажите, пожалуйста, как отсечь пустые текстовые узлы?
  • Вопрос задан
  • 317 просмотров
Решения вопроса 1
DevMan
@DevMan
пффф.....
$elements = $xpath->query( '//body/div/* | //body/div/text()' );
foreach( $elements as $element ) {
	// как здесь проверить, текстовый текущий узел или нет?
	if( $element->nodeType == 3 ) {
		// текстовая нода
		$tmp = trim($element->c14n());
		// убираем пустые ноды
		if(! empty($tmp)) {
			echo "<p>" . $tmp . "</p>", PHP_EOL;
		}
	}
	// для всех остальных (не текстовых узлов)
	else {
		echo $element->C14N(), PHP_EOL;
	}
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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