Может ли XPath соответствовать части имени элемента? Я хочу сделать это: //* фу который возвращает все узлы, имя которых заканчивается на fu, например <tarfu /> и <snafu />, но не <fubar /> Ответ 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'] Поиск совпадений с элементами, заканчивающимися на "Позиция"
Ответ 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'] Поиск совпадений с элементами, заканчивающимися на "Позиция"