Это данные:
<p> <span class="z">XXX</span><br/> 123456<br/> 78910</p>
Везде также есть пробелы и переводы строк. Мне нужно получить только '<br/>123456<br/>78910', пропуская элемент span. Когда я запускаю этот xpath: '// p / text ()', я получаю 3 совпадения: первое - набор пробелов и символов новой строки, второе с 123456 и третье с 78910. Есть ли другой способ пропустить элемент span? Можно ли как-то присоединиться к матчам?
<br/>123456<br/>78910
Использовать :
/p/node()[not(self::span) and (not(self::text[not(normalize-space())]))]
Выбирает все узлы, которые являются дочерними для верхнего элемента p, и если они являются текстовыми узлами, они не являются только пробелами.
p
Похоже, вы пытаетесь выбрать каждый узел после элемента span:
span
/p/span/following-sibling::node()
Если вы хотите, чтобы текстовые узлы потомков без пробелов содержали только текстовые узлы:
/p/text()[normalize-space()]