有没有参数能让XML 不转义

topspin 2007-12-10 02:26:57
查询如下
SELECT
GetText(SOMETHING) + ','
FROM Text
WHERE
Text.ID = @ID
FOR XML PATH('')

 由于 something 里带有& 每次生成的XML都把&替换成& 请问有办法禁用这个自动转义吗?
...全文
508 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2007-12-10
  • 打赏
  • 举报
回复
DECLARE @x XML
SET @x='<root>&</root>'


试下这个就知道了,直接插预定义实体的话,本身编译器自己都会报错.

在for xml生成xml文档时,其实就是已经转义过的.
topspin 2007-12-10
  • 打赏
  • 举报
回复
感谢各位朋友的帮助, 我想问下有没有办法不用cdata标记。 因为产生的XML被放到一个VarChar里直接当字符串使用。
比如是不是有什么参数
FOR XML PATH(''), XXX
可以禁用掉XML的转义

fcuandy 2007-12-10
  • 打赏
  • 举报
回复
还有个问题,节点属性值中无法用cdata,即便写上,那也只是字符.

确实,还原问题,解析器自己会处理的.
fcuandy 2007-12-10
  • 打赏
  • 举报
回复
SQL2005 ? 2k下好像没有path模式.

如老大所说,加cdata标记可以做到不解析,原样输出. path模式支不支持cdata不清楚,sql2005不熟.

我觉得这里,可以不用管它,因为sql只负责取数据,显示问题应该留给前台程序去做.声明 disable-output-escaping="yes"原来输出即可
<xsl:text><xsl:value-of select="//path" disable-output-escaping="yes"/></xsl:text>
zjcxc 2007-12-10
  • 打赏
  • 举报
回复
不过, 转义似乎也没有问题吧? 因为你从 xml 里面使用 value 之类的方法再把数据取出来的时候, 会自动再还原回来
zjcxc 2007-12-10
  • 打赏
  • 举报
回复
加CDATA标记就可以
不过, CDATA 标记似乎只有在 EXPLICIT 模式下才能用

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧