C# 如何避免在SQL Server中将HTML实体转换为HTML表单转换(@ContentXml AS XML)

C# 如何避免在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>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</cont> <data>0</data> <cont>"&lt;b&gt

我有一个XML
DECLARE@XML XML=CAST(@ContentXml AS-XML)
。这里我发送以下XM

<content>
    <data>0</data>
    <cont>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</cont>
    <data>0</data>
    <cont>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</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>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</cont>
    <data>0</data>
    <cont>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</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>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</cont>
    <data>0</data>
    <cont>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</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>"  "&lt;b&gt;hello&lt;/b&gt;"
0   "<b>hello</b>"  "&lt;b&gt;hello&lt;/b&gt;"
DECLARE @xml XML=
REPLACE(
N'<content>
    <data>0</data>
    <cont>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</cont>
    <data>0</data>
    <cont>"&lt;b&gt;hello&lt;&#x2F;b&gt;"</cont>
</content>','&','&amp;');

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)