Как объединить 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 будет найден

Другие вопросы по тегам