如何使SQL查询不转义查询中返回的HTML数据

如何使SQL查询不转义查询中返回的HTML数据,sql,xml,sql-server-2005,Sql,Xml,Sql Server 2005,我有以下SQL查询 select AanID as '@name', '<![CDATA[' + Answer + ']]>' from AuditAnswers for XML PATH('str'), ROOT('root') 从AuditAnswers中为XML路径('str')、根('ROOT')选择AanID作为'@name','' 它的工作原理非常好,但是“答案”列有时会包含HTML标记。查询会自动从生成的XML中的“应答”列中转义此HTML。我不想那样。我将在CDA

我有以下SQL查询

select AanID as '@name', '<![CDATA[' + Answer + ']]>' from AuditAnswers for XML PATH('str'), ROOT('root')
从AuditAnswers中为XML路径('str')、根('ROOT')选择AanID作为'@name',''
它的工作原理非常好,但是“答案”列有时会包含HTML标记。查询会自动从生成的XML中的“应答”列中转义此HTML。我不想那样。我将在CDATA中包装此结果列,因此不需要转义

我希望结果是这样

<str name="2"><![CDATA[<DIV><DIV Style="width:55%;float:left;">Indsfgsdfg]]></str>
Indsfgsdfg]>
而不是这个

<str name="2">&lt;![CDATA[&lt;DIV&gt;&lt;DIV Style="width:55%;float:left;"&gt;In</str>
![CDATA[div Style=“宽度:55%;浮动:左;”输入

有没有函数或其他机制可以做到这一点?

在数据库输出中使用
比使用
div/div
有什么好处?在我看来,在这两种情况下,您的XML输出中都会有一个正确转义的HTML片段,用一个像样的XML解析器读回它应该会得到未转义的ori两种情况下都是基本版本。

在数据库输出中使用
比使用
div/div
有什么好处?在我看来,在这两种情况下,在XML输出中都会有一个正确转义的HTML片段,用一个像样的XML解析器读回,应该会得到两个ca中未转义的原始版本ses.

为XML选择任何内容逃离任何预先存在的XML,这样它就不会破坏XMLDATA的一致性。您所给出的第一个示例行被认为是不正确形成的XML,并且不能被XMLDoice对象以及大多数解析器加载。我会考虑重构您正在做的事情,这样您就可以有一个更高效的SOL。注意。

为XML选择任何内容逃离任何预先存在的XML,这样它就不会破坏XMLDATA的一致性。您所给出的第一个示例行被认为是不正确形成的XML,并且不能被XMLDoice对象以及大多数解析器加载。我会考虑重构您正在做的事情,这样您就可以有一个更高效的SOL。注意。

使用显式模式XML查询时,可以指定将输出视为CDATA。请参阅:


使用显式模式XML查询时,可以指定将输出视为CDATA。请参阅:


您可以使用
for xml explicit
cdata
指令:

select
   1 as tag,
   null as parent,
   AanID as [str!1!name],
   Answer as [str!1!!cdata]
from AuditAnswers
for xml explicit

您可以将
用于xml explicit
cdata
指令:

select
   1 as tag,
   null as parent,
   AanID as [str!1!name],
   Answer as [str!1!!cdata]
from AuditAnswers
for xml explicit

我不知道这有什么好处,也不知道这是否重要。我做过一些其他工作,CDATA标记之间的嵌入式标记已经使用了“”,所以我想删除和文本,只是为了与以前的工作保持一致,但你是对的,我认为这根本不重要。我不知道有什么好处,或者是否有用尝试。我做过一些其他工作,CDATA标记之间的嵌入标记已经在使用“”,所以我想删除和文本,只是为了与之前的工作保持一致,但你是对的,最终我认为这无关紧要。有趣。我没有意识到这一点。这看起来对我有帮助。有趣。我我没有意识到这一点。这看起来对我很有帮助。很高兴知道像其他一些人提到的那样,显式模式是我正在寻找的。谢谢你的信息。很高兴知道像其他一些人提到的那样,显式模式是我正在寻找的。谢谢你的信息。非常感谢你的链接。我不知道关于explicit模式。非常感谢链接。我不知道显式模式。