Задать вопрос

Как парсить теги по очереди?

Есть xpath такого вида:
filterXPath('//p|//img|//blockquote|//ul|//li|//strong|//b|//i')

И вот проблема есть блок <blockquote> в котором и <strong>, и , тем самым парсит весь текст из трех сразу.
То есть:
[0] => Текст из цитаты вместе с жирным и параграфом
[1] => Жирный из blockquote
[2] => Параграф из blockquote

Тексты дублируются. Но под цитатой тоже есть теги параграфа и жирного, то есть убрать из xpath теги strong, p тоже нельзя. Можно ли как-то брать , который не в blockquote?
  • Вопрос задан
  • 227 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@Roman-Fov
Тут или указывать точно, что нужно (со всякими грязными трюками):

XML
<div>
	<p>par</p>
	<strong>strong</strong>
	<divd>
		<p>divpar</p>
	</divd>
	<blockquote>
		<p>bqpar <strong>bqparstrong</strong></p>
	</blockquote>
</div>

XPath
//p[name(ancestor::blockquote[1]) != 'blockquote']|//strong[name(ancestor::blockquote[1]) != 'blockquote']|//blockquote

Result
Element='<p>par</p>'
Element='<strong>strong</strong>'
Element='<p>divpar</p>'
Element='<blockquote><p>bqpar <strong>bqparstrong</strong></p></blockquote>'


или перестать злоупотреблять двойными слешами
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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