受convert-string-to-xml-illegal-characters的启发
我想知道纯T-SQL
是否有办法将格式错误的XML字符串转换为格式良好的版本。
我有NVARCHAR,如:
DECLARE @string NVARCHAR(MAX) =
N'<root>
<stuff attrib="Ooop,bad character<">
<test>Here I get &, and "<" or ">>>>" </test>
<test2>And even more <<<>><><<<><> </test2>
</stuff>
</root>';
SELECT CONVERT(XML, @string);
当然这会失败,因为&
应该被&
取代,这很容易。
但是如果在事先不知道结构的情况下将<
和>
置于元素文本或属性中,该如何替换它们?
答案 0 :(得分:2)
没有一种将字符串更改为有效XML的神奇方法。您必须确保以确保语法正确的方式构建XML字符串。即使您使用&
替换所有&
的简单方法也无效。考虑这个XML字符串:
<root>
<stuff>
<test>Here I get &</test>
</stuff>
</root>';
简单的替换将导致:
<root>
<stuff>
<test>Here I get &amp;</test>
</stuff>
</root>';
除非您想编写大量代码来将字符串解析为XML,否则您应该:
FOR XML
子句
语句。<![CDATA[ ]]>
中或替换变量标签和属性中的无效字符。