Sql server TSQL在XML中转换字符

Sql server TSQL在XML中转换字符,sql-server,xml,tsql,stored-procedures,Sql Server,Xml,Tsql,Stored Procedures,我正在代码中生成一个XML字符串,并将其发送到存储过程。由于特定的数据包含一个符号&,我必须在发送XML字符串之前将其转换为其他内容,因为它会扰乱XML结构 我将&的任何实例转换为XML字符串中的~ 通常,在过去,当我准备将数据添加到字段中时,我会重新转换该字符,并且效果良好 但是,这次我将把一个XML节点插入到一个字段中,该字符包含在该节点中 INSERT INTO TFS_Feedback_New (submitTime, type, reasonID, status, outcome,

我正在代码中生成一个XML字符串,并将其发送到存储过程。由于特定的数据包含一个符号
&
,我必须在发送XML字符串之前将其转换为其他内容,因为它会扰乱XML结构

我将
&
的任何实例转换为XML字符串中的
~

通常,在过去,当我准备将数据添加到字段中时,我会重新转换该字符,并且效果良好

但是,这次我将把一个XML节点插入到一个字段中,该字符包含在该节点中

 INSERT INTO TFS_Feedback_New (submitTime, type, reasonID, status, outcome, Details, submitterQID, submitterSupQID, submitterDepartment, submitterGeoLocationDesc, targetQID, targetSupQID, targetDepartment, targetGeoLocationDesc, feedbackOriginal)
SELECT GETUTCDATE(),
       @feedbackType,
       @feedbackReason,
       @status,
       'Pending',
       @xml.query('/data/optional'),
       @submitterQID,
       @SubmitterSupQID,
       @SubmitterDept,
       @SubmitterLoc,
       @TargetQID,
       @TargetSupQID,
       @TargetDept,
       @TargetLoc,
       @feedback
正如您所看到的,有一个字段
@xml.query('/data/optional')
。这就是包含XML字符串的内容,该字符串具有我需要替换的字符

下面是我发送到存储过程
Dogs~Cats

在将XML字符串插入字段之前,我需要将
~
转换为
&


有什么想法吗?

XML字符串中不允许使用
&
字符。它应编码为
&,表示符号AND,或者作为
&,使用


查看您是否可以让您的客户以正确编码的方式发送
&
&XML。我还建议您将列的类型设置为
xml
,这样您就可以相信它包含语法正确的xml。

您需要进行适当的xml实体编码。您需要做的最低要求是:

  • &
    =&
  • 首先应该生成正确的xml<代码>&
    应为
    &。如果不允许使用
    &
    ,为什么
    &;)因为裸
    &
    在xml中是非法的。它必须编码为
    &将中断xml的特殊字符列表及其替换" - " ' - '
    SBB,不确定您是否看到了我在您接受后发布的最后一次编辑(谢谢),但是如果您使用.NET,我发现了一种非常简单的编码方法。
    <tag attribute="test &quot; attr">Some stuff here</tag>