0

在 Microsoft SQL Server 2008 中,.query('{xpath}/text()')对 XML 流列值执行时,如果 XPath 选定节点的值包含“ &”,则返回值为“ &amp”而不是“ &”。

这是一个错误,还是我做错了什么?或者更确切地说,如果 XPath 查询中的 text() 不应该这样做,我如何使用 SQLXML XPath 获取未编码的文本,即等效于 .innerText(每个 W3C XML DOM)?

4

1 回答 1

4

没有错误,SQL XML 正确解码 XML 转义序列:

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

您的问题最有可能是您对 XML查询方法的误解:它返回一个XML片段,因此所有内容都将被...转义,因为它是 XML:

declare @x xml;
set @x = '<node>&amp;some</node>';
select @x.query(N'/node/text()');
于 2010-03-04T21:55:34.443 回答