Подтвердить что ты не робот

Может ли XPath соответствовать части имени элемента?

Я хочу сделать это:

//* фу

который возвращает все узлы, имя которых заканчивается на fu, например <tarfu /> и <snafu />, но не <fubar />

4b9b3361

Ответ 1

Сделайте что-то вроде:

//*[ends-with(name(), 'fu')]

Для хорошей справки XPath ознакомьтесь с учебником W3Schools.

Ответ 2

Этот ответ предназначен для XPath 1.0, где нет эквивалента Стандартная версия XPath 2.0 с функцией().

Следующее выражение XPath 1.0 выбирает все элементы в документе xml, имена которых заканчиваются строкой "fu":

//*[substring(name(),string-length(name())-1) = 'fu']

Ответ 3

Я боролся с ответом Димитрия Новачева, он не вернул бы спички. Я знал, что у вашего XPath должен быть раздел, говорящий, что "fu" имеет длину 2.

Он должен иметь длину строки ('fu'), чтобы определить, что подстрока.

Для тех, кто не может получить результаты с его ответом, и они требуют решения с помощью xpath 1.0:

//*[substring(name(), string-length(name()) - string-length('fu') +1) = 'fu']

Находит совпадения элементов, заканчивающихся на "fu"

или

//*[substring(name(), string-length(name()) - string-length('Position') +1) = 'Position']

Поиск совпадений с элементами, заканчивающимися на "Позиция"