Атрибут xpath с амперсандом () выдает ошибку «XPST0003: Нет закрытия»; найдено для ссылки на сущность или символ ' - PullRequest
0 голосов
/ 28 мая 2020

Я работаю с решением, которое использует выражения xpath для сбора данных. Одно из этих выражений работало нормально, пока не появились данные со специальными символами.

Пример поля xml, содержащего данные:

<variable id="name" value="STICKS &amp; STONES"/>    

Это выражение xpath для выборки данных:

contract/variable[@id \= 'info']/variable[@id \= 'client']/variable[@id \= 'name']/@value

(backsla sh для работы приложения требуется предшествующий знак равенства).

Я попытался заменить представление объекта знаком &:

replace(/contract/variable[@id \= 'info']/variable[@id \= 'client']/variable[@id \= 'name']/@value, '&amp;', '&')

Он работает, но исправляет только этот конкретный случай . Я хочу найти способ справиться со всеми вхождениями представлений сущностей.

Есть ли способ «отменить экранирование» содержимого, полученного из выражения xpath?

1 Ответ

1 голос
/ 29 мая 2020

Я полагаю, вы можете использовать функцию string(), чтобы обойти проблему с точкой с запятой:

string(contract/variable[@id \= 'info']/variable[@id \= 'client']/variable[@id \= 'name']/@value)

должен вывести желаемый STICKS & STONES.

...