XPath для вложенных элементов с текстом(), но без пробелов
У меня плохой XHTML мне нужно разбираться с xpath. Это выглядит так:
<div class="foo">
i need this text
<br/>
<br/>
<span>sometext</span>
</div>
<div class="foo">
<span>some other text</span>
<span>sometext</span>
</div>
Я хочу выбрать ВСЕ контент с "Мне нужен этот текст" в первом div. Моя проблема заключается в том, что элементы div содержат пробелы или другие элементы, так что //div [@class= "foo"]/text() возвращает также и пустые строки для второго div. Я хочу игнорировать эти пустые поля, как я могу это сделать?
Ответы
Ответ 1
Использование:
//div
[.//text()
[normalize-space() = 'i need this text']
]
//text()[normalize-space()]
Это выбирает любой дочерний объект текстового узла, не содержащий пробелов, любого div
в документе, который (у div
) имеет потомком текстового узла, нормализованным строковым значением которого является строка "i need this text"
.
Функция normalize-space()
принимает строку (строковое значение контекстного узла - если аргумент не указан) и создает из него другую строку, в которой удаляются все символы верхнего и конечного пробелов, и любая внутренняя группа смежных пробелов символы заменяются одним пробелом.
Ответ 2
Попробуйте этот селектор:
//span[@class='glyphicon glyphicon-list mr5']/..[contains(normalize-space(text()),'Applications')]