将文本转换为xml错误非法限定名称字符

Ira*_*raj 4 sql t-sql sql-server

如何修复此示例中的错误非法限定名称字符:

 Declare @Str As nvarchar(256)
 Set @Str = N'<Log "ReceiptStockHNo="2" ReceiptStockHDate="Feb  4 2" Comment="" />'
 Select Cast(@Str As xml) 
Run Code Online (Sandbox Code Playgroud)

错误:

消息9455,级别16,状态1,行5
XML解析:第1行,字符6,非法限定名称字符

Roy*_*mir 6

这个额外的是什么"?.

在此输入图像描述

删除它",它会工作.

附加信息 :

为了防止像需要编码的字符未来的错误&,<使用适当的更换:

 Declare @Str As nvarchar(256)
 Set @Str =  '<tag>&</tag>'
 Select Cast(@Str As xml) 
Run Code Online (Sandbox Code Playgroud)

将产量:

消息9421,级别16,状态1,行3 XML解析:第1行,字符7
非法名称字符

当改变<&lt;:

 Declare @Str As nvarchar(256)
 Set @Str =  '<tag>&lt;</tag>'
 Select Cast(@Str As xml) 
Run Code Online (Sandbox Code Playgroud)

会好的.