我在SQL Server中遇到XML查询问题。我通常在@XML
变量上运行查询以获取这样的数据,但在某个语句中它不起作用。
此代码可以正常使用
Declare @XML as XML =
'
<ResponseData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Remain>12345654321.1234</Remain>
<ErrorMsg />
</ResponseData>';
;
Select
F.value('Remain[1]','decimal(18,4)') as A,
F.value('ErrorMsg[1]','varchar(100)') as B
FROM @XML.nodes('ResponseData')Tbl(F);
但如果我在@XML
的第一行中添加新行,则无法解析并返回以下错误
XML解析:第2行,第6个字符,text / xmldecl不在输入的开头
Declare @XML as XML =
'
<?xml version="1.0" encoding="utf-16"?>
<ResponseData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Remain>12345654321.1234</Remain>
<ErrorMsg />
</ResponseData>';
;
Select
F.value('Remain[1]','decimal(18,4)') as A,
F.value('ErrorMsg[1]','varchar(100)') as B
FROM @XML.nodes('ResponseData')Tbl(F);
<?xml version="1.0" encoding="utf-16"?>
添加到@XML
变量。
感谢
答案 0 :(得分:2)
字符串的开头和<?xml
只需删除换行符。
如果你想使用utf-16,你需要在字符串前面添加N
Declare @XML as XML = N'<?xml version="1.0" encoding="utf-16"?>....