XPath - выделять весь текст как одну строку - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть следующий HTML:

<p>
    Some cool text
    <a href="#">looks like</a>
    this.
</p>

Я хочу взять текст одной строкой:

Какой-то классный текст выглядит следующим образом.

В настоящее время я использую следующий запрос XPath:

// p // text ()

И он возвращает весь текст, но как отдельныйлинии:

Какой-нибудь классный текст

выглядит так:

this.

Есть мысли о том, как изменить мой запрос, чтобы он могвозврат в одну строку?

Запрос должен соответствовать требованиям XPath1.0.

Ответы [ 3 ]

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

Если у вас есть XPath-2.0 или выше, вы можете использовать string-join(...) для объединения значений text():

string-join(normalize-space(p))
0 голосов
/ 06 февраля 2019

Этот XPath (1.0 и выше),

string(normalize-space())

вернет

"Some cool text looks like this."

в одной строке, как требуется.

См. Также Тестирование узлов text () и строковых значений в XPath

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

text() выбирает отдельные текстовые узлы, и между элементами всегда будет хотя бы один текстовый узел (там, где есть текст).Вам нужно преобразовать p в строку:

//p/string(.)
...