我有XML 结构,它是我的存储过程的输入参数。它包含带有&的元素(在 XML 中转义)。当我将该元素提取到VARCHAR
我收到&时,它不是有效的 XML 字符。在再次转换为 XML 之前,我需要对其进行转义。没有 怎么办REPLACE
?
我有以下文字:param1=xyz¶2=dasdasdfdas¶m3
。它是查询字符串的一部分。我将其转换XML
为 XML 结构的一部分并将其发送:
<zzz xmlns="http://example.com">
<aaa>aaa</aaa>
<bbb>param1=xyz&para2=dasdasdfdas&param3</bbb>
</zzz>
在存储过程中,我需要提取它。我这样做:
ISNULL(NULLIF(LTRIM(RTRIM(@XMLInput.value('declare default element namespace "http://example.com"; (zzz/bbb)[1]', 'NVARCHAR(250)'))), ''), '');
之后我的值包含普通文本(& -s 没有转义 - &)。
经过一些处理后,我需要将该字符串放入其他 XML 中。我做:
CAST( ... AS XML);
因为& -s 没有被转义,所以我得到了错误。
用于
for xml path
创建 XML 而不是强制转换。路径表达式中的空字符串和返回的列上没有别名将使您的字符串返回为 xml。
这是完全有效的 XML。如果您
bbb
使用 XML 数据类型的方法提取元素.value
,它将在该点被取消实体化,例如您可以提取和添加元素而无需特殊处理或替换,例如使用
.modify
XML 数据类型的方法: