我有一个存储过程,我正在调用一个返回XML的Web服务。为了能够阅读瑞典语字符,我这样做:
select @xml = CAST(REPLACE(CAST(@response as nvarchar(max)), 'utf-8', 'utf-16') as xml)
@response
是我从网络服务获得的回复。这确实能够读取瑞典语字符,但它并没有改变XML仍然看起来像是<
和>
而不是<
和{{1} }。
我该如何更改?
编辑--- 这就是我对xml响应的处理方式:
>
编辑2 ---- 这是xml响应:
答案 0 :(得分:2)
您在另一个XML中有一个只有一个根节点string
的XML。
将@response
直接分配给@xml
并使用value()
将嵌入式XML作为nvarchar(max)
,然后转换为XML。
我没有看到你在那里编码ÅÄÖ,所以你可能需要调整解决方案来处理这个问题。
declare @xml xml
declare @response varchar(max)
-- Sample response
set @response = '<string xmlns="http://tempuri.org"><?xml version=''1.0'' encoding=''utf-16''?><PMDataSet>SomeValue</PMDataSet></string>'
set @xml = @response
select cast(@xml.value('(*:string/text())[1]', 'nvarchar(max)') as xml)
结果:
<PMDataSet>SomeValue</PMDataSet>