You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从XML中读取Success属性值,请求排查解决

问题根源

你的XML里的<Result>和<Success>节点属于http://tempuri.org/命名空间,但你的XPath查询没指定这个命名空间,SQL Server找不到对应节点,所以拿不到值。

解决办法

方法1:声明命名空间(推荐)

用WITH XMLNAMESPACES明确指定默认命名空间,让XPath能精准匹配节点:

DECLARE @Response VARCHAR(8000) = '<?xml version="1.0" encoding="utf-8"?>  
<Result xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">    
    <Success>true</Success>  
</Result>'

DECLARE @xml TABLE (
    Content XML
)

INSERT INTO @xml
SELECT CAST(@Response AS XML)

WITH XMLNAMESPACES (DEFAULT 'http://tempuri.org/')
SELECT
    Content.value('(/Result/Success)[1]', 'BIT') AS Success
FROM @xml

执行后会返回1(对应BIT类型的true),如果Success是false则返回0。

方法2:用通配符跳过命名空间(不推荐)

如果嫌麻烦,也可以用*:匹配任意命名空间的节点,但这种方式不够严谨,XML结构变化时容易出错:

DECLARE @Response VARCHAR(8000) = '<?xml version="1.0" encoding="utf-8"?>  
<Result xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">    
    <Success>true</Success>  
</Result>'

DECLARE @xml TABLE (
    Content XML
)

INSERT INTO @xml
SELECT CAST(@Response AS XML)

SELECT
    Content.value('(/*:Result/*:Success)[1]', 'BIT') AS Success
FROM @xml

内容的提问来源于stack exchange,提问作者Josue Barrios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:25:34