【发布时间】:2015-01-26 15:12:33
【问题描述】:
我正在我的代码中生成一个 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 字符串的内容。
这是我发送给存储过程<optional><fields><department>Dogs ~ Cats</department></fields></optional>的XML
在将该 XML 字符串插入字段之前,我需要将 ~ 转换为 &amp;。
有什么想法吗?
【问题讨论】:
-
您应该首先生成正确的 xml。
&amp;应该是&amp;。 -
如果
&amp;不被允许,那为什么&amp;;) -
因为裸露的
&amp;在 xml 中是非法的。必须编码为&amp; -
会破坏
xml的特殊字符列表及其替换& - &amp; < - &lt; > - &gt; " - &quot; ' - &#39; -
SBB,不确定您是否看到了我在您接受后发布的最后一次编辑(谢谢),但如果您使用 .NET,我发现了一种超级简单的编码方法。
标签: sql-server xml tsql stored-procedures