XPATH игнорирует заданное c имя класса div - PullRequest
1 голос
/ 28 января 2020
<div class="rowh">Engine and Drive Train
  </div>
  <a name="anc0"></a>
  <div class="optexrow oid0 row " data-oid="0">
    <div class="key">Engine Size
    </div>
    <div class="value">998 cc 
    </div>
    <div class="cf">
    </div>
  </div>

Этот запрос:

//div[contains(preceding-sibling::div[@class='rowh'][1],'Engine and Drive Train')]/div

Дает мне:

    1.Engine Size
    2.998 cc
    3.
    4.Gears
    5.5
    6.
    7.Number of Valves
    8.12
    9.
    10.Transmission
    11.Manual

Как мне проигнорировать этот пустой div:

<div class="cf">

Или не смотреть для этого в первую очередь? Я знаю, что это как-то связано с «НЕ», но я не могу уложить это.

1 Ответ

1 голос
/ 28 января 2020

Вы можете использовать normalize-space(), функция удаляет начальные и конечные пробелы из строки, заменяет последовательности пробельных символов одним пробелом и возвращает полученную строку.

, затем проверяет длину строки с помощью string-length() функция в XPath. Функция string-length () возвращает количество символов в строке.

, окончательный запрос будет выглядеть следующим образом:

//div[contains(preceding-sibling::div[@class='rowh'][1],'Engine and Drive Train')]/div[string-length(normalize-space(text())) > 0]

или сократится, используя normalize-space(), только следующим образом:

//div[contains(preceding-sibling::div[@class='rowh'][1],'Engine and Drive Train')]/div[normalize-space()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...