Как объединить XPATH "select //td/text() или //td/p/text()" в одно предложение?
Я хочу выбрать текст () в каждой строке в следующем HTML. Тем не менее, текст, который я хочу, находится либо в элементе td, либо в элементе p, поэтому мне нужно написать два оператора, чтобы убедиться, что выбрана каждая строка.
Как мне объединить два утверждения в одно?
XPATH:
//table/tr/td[not(p)]/text() | //table/tr/td/p/text()
С желаемым результатом:
['1', '2', '3', '4']
Оригинальный HTML:
<table>
<tr>
<td>1</td>
</tr>
<tr>
<td>
<p>2
</td>
</tr>
<tr>
<td>3</td>
</tr>
<tr>
<td>
<p>4
</td>
</tr>
</table>
1 ответ
Решение
Вероятно, вы хотите что-то вроде этого:
//table/tbody/tr/td//text()[normalize-space()]
Все текстовые узлы без пробелов, один или несколько уровней в глубине //table/tr/td
будет найден