Проблема XPath с пропуском совпадений элементов / соединений - PullRequest
1 голос
/ 29 декабря 2010

Это данные:

<p>
<span class="z">XXX</span><br/>
123456<br/>
78910</p>

Везде также есть пробелы и переводы строк. Мне нужно получить только '<br/>123456<br/>78910', пропуская элемент span. Когда я запускаю этот xpath: '// p / text ()', я получаю 3 совпадения: первое - набор пробелов и символов новой строки, второе с 123456 и третье с 78910.
Есть ли другой способ пропустить элемент span? Можно ли как-то присоединиться к матчам?

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Использовать :

/p/node()[not(self::span) and (not(self::text[not(normalize-space())]))]

Выбирает все узлы, которые являются дочерними для верхнего элемента p, и если они являются текстовыми узлами, они не являются только пробелами.

1 голос
/ 29 декабря 2010

Похоже, вы пытаетесь выбрать каждый узел после элемента span:

/p/span/following-sibling::node()

Если вы хотите, чтобы текстовые узлы потомков без пробелов содержали только текстовые узлы:

/p/text()[normalize-space()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...