SQL Server 2008: функция SQLXML Query .query ('// mypath / text ()') не декодирует XML - PullRequest
0 голосов
/ 05 марта 2010

В Microsoft SQL Server 2008, при выполнении .query('{xpath}/text()') для значения столбца потока XML, если значение выбранного узла XPath содержит "&", возвращаемое значение будет "&amp" вместо "&».

Это ошибка, или я что-то не так делаю? Или, скорее, как получить незашифрованный текст, то есть эквивалент .innerText (для W3C XML DOM), с SQLXML XPath, если text () в запросе XPath не должен этого делать?

1 Ответ

4 голосов
/ 05 марта 2010

Нет ошибок, SQL XML правильно декодирует escape-последовательности XML:

declare @x xml;
set @x = '<node>&amp;some</node>';
select @x.value(N'(node)[1]', N'varchar(max)');

Скорее всего, ваша проблема заключается в недоразумении с вашей стороны метода XML query : он возвращает фрагмент XML , и поэтому весь контент будет ... экранирован , поскольку это XML:

declare @x xml;
set @x = '<node>&amp;some</node>';
select @x.query(N'/node/text()');
...