Как читать текст с пробелом в xpath - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть listBox со значением «This is_a_test» (после This есть пробел)

$x('//li[contains(@class,"myClass")][text()="This is_a_test"]')

Когда я запускаю его, я получаю пустой список []

Я пробовал также

$x('//li[contains(@class,"myClass")][text()="This<b></b> <b></bis_a_test"]')

Что мне нужно изменить в своем выражении?

XML

<li .... >
"This"
<b></b>
<b></b>
"is_a_test"
</li>

1 Ответ

0 голосов
/ 26 февраля 2019

Браузер «показывает» пробел, но в командной строке вы получаете

xmllint --html --xpath "//li[contains(@class,'myclass')]/text()" test.html
"This"


"is_a_test"

Таким образом, в результате появятся 3 новые строки, которые также являются частью вывода text().

Удаляя новые строки из html, этот XPath работает (кавычки для простоты)

echo '<li class="myclass">"This"<b></b> <b></b>"is_a_test"</li>' | \
xmllint --html --xpath "//li[contains(@class,'myclass')][.='\"This\" \"is_a_test\"']/text()" -

Результат:

"This" "is_a_test"

Обратите внимание на оператор точки . вместо text().
Нелегко представлять новые строки в выражении xpath.Кроме того, вы можете проверить этот ответ для получения дополнительной информации о разнице между точкой и текстом () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...