C# 如何避免在SQL Server中将HTML实体转换为HTML表单转换(@ContentXml AS XML)
我有一个XMLC# 如何避免在SQL Server中将HTML实体转换为HTML表单转换(@ContentXml AS XML),c#,html,sql-server,xml,C#,Html,Sql Server,Xml,我有一个XMLDECLARE@XML XML=CAST(@ContentXml AS-XML)。这里我发送以下XM <content> <data>0</data> <cont>"<b>hello</b>"</cont> <data>0</data> <cont>"<b>
DECLARE@XML XML=CAST(@ContentXml AS-XML)
。这里我发送以下XM
<content>
<data>0</data>
<cont>"<b>hello</b>"</cont>
<data>0</data>
<cont>"<b>hello</b>"</cont>
</content>
此查询返回以下结果
0 <b>hello</b>
0 <b>hello</b>
0你好
0你好
如何防止HTML实体被转换为等效的HTML代码?我希望我的回答是正确的:您希望内部部分保持原样吗 一种实用的方法是,将得到的字符串放入一个新的
SELECT。。。对于XML路径
sub,选择如下:
DECLARE @xml XML=
N'<content>
<data>0</data>
<cont>"<b>hello</b>"</cont>
<data>0</data>
<cont>"<b>hello</b>"</cont>
</content>';
SELECT
N.value('(../data/text())[1]', 'INT') AS ContentID
,N.value('(../cont/text())[1]', 'NVARCHAR(500)') AS Content
,(SELECT N.value('(../cont/text())[1]', 'NVARCHAR(500)') FOR XML PATH('')) AS ContentEscaped
FROM @xml.nodes('/content/data') AS T(N);
DECLARE @xml XML=
N'<content>
<data>0</data>
<cont>"<b>hello</b>"</cont>
<data>0</data>
<cont>"<b>hello</b>"</cont>
</content>';
SELECT
N.value('(../data/text())[1]', 'INT') AS ContentID
,N.value('(../cont/text())[1]', 'NVARCHAR(500)') AS Content
,(SELECT N.value('(../cont/text())[1]', 'NVARCHAR(500)') FOR XML PATH('')) AS ContentEscaped
FROM @xml.nodes('/content/data') AS T(N);
ContentID Content ContentEscaped
0 "<b>hello</b>" "<b>hello</b>"
0 "<b>hello</b>" "<b>hello</b>"
DECLARE @xml XML=
REPLACE(
N'<content>
<data>0</data>
<cont>"<b>hello</b>"</cont>
<data>0</data>
<cont>"<b>hello</b>"</cont>
</content>','&','&');
SELECT
N.value('(../data/text())[1]', 'INT') AS ContentID
,N.value('(../cont/text())[1]', 'varchar(max)') AS Content
FROM @xml.nodes('/content/data') AS T(N)