行:35,ERR_MSG:XML解析:第1行,第1088个字符,非法限定名字符

时间:2016-06-13 17:35:14

标签: sql-server xml xml-parsing for-xml-path

如何从XML中替换<符号?我需要理解这个概念,例如我们将&替换为xml中的&amp;

例如:

Declare @xml xml,@xmlType nvarchar(max)

select @xmlType = '<root><stuff><test>something < this will error</test></stuff</root>'

select @xml = REPLACE(@xmlType, '<', '&lt;') 

select @xml

如果我这样做,那么答案将是

'&lt;root&gt;&lt;stuff&gt;&lt;test&gt;something &lt; this will error&lt;/test&gt;&lt;/stuff&lt;/root&gt;'....

但我需要回答

<root><stuff><test>something &lt; this will error</test></stuff></root>

任何人都可以通过SQL查询/存储过程/ T-SQL来帮助我解决这个问题吗?

如何解决此问题:

  

行:35,ERR_MSG:XML解析:第1行,第1088个字符,非法限定名称字符

提前致谢

1 个答案:

答案 0 :(得分:0)

你需要确保'&lt;之间有空格。 '或其他一些限定词不能接受另一个'&lt;'。

Declare
     @xml xml
    ,@xmlType nvarchar(max)

SET @xmlType = '<root><stuff><test>something < this will error</test></stuff></root>'

SET @xmlType = REPLACE(@xmlType, ' < ', ' &lt; ')

SET @xml = CAST(@xmlType AS XML)

SELECT @xml