在MS SQL SERVER中解析xml时得到空结果

fdbelqdn  于 2022-11-21  发布在  SQL Server
关注(0)|答案(1)|浏览(264)

我正在尝试解析存储在SQL Server表中的XML数据。我尝试使用以下代码(调整为删除个人信息并显示设置),但返回的是空白。是否有某种方法可以执行此操作以获得结果?预期结果应为
您的索赔已于2022/10/22被驳回,您的索赔已被驳回,原因:这是一个不活跃的计划。请致电123456789或登录www.example.com与客户服务中心联系email@mail.com以获得帮助。

declare @tempxml as table (xmlstr varchar(max));
insert into @tempxml
values (replace('<?xml version="1.0" encoding="UTF-8"?>
<hb:MedicalAidMessage xmlns:hb="address.co.za/messaging"
                      Version="6.0.0">
    <Claim>
        <Details>
            <Responses>
                <Response Type="Error">
                    <Code>6</Code>
                    <Desc>Your claim has been rejected on 2022/10/22. Your claim has been rejected. Reason: This is an inactive scheme. Please contact the Client Service Centre on 123456789 or at email@mail.com for assistance.</Desc>
                </Response>
            </Responses>
        </Details>
    </Claim>
</hb:MedicalAidMessage> ',':',''))

declare @XMLData xml
set @XMLData = (select * from @tempxml)

select [Reason] = n.value('Desc[1]', 'nvarchar(2000)')
  from @XMLData.nodes('/hbMedicalAidMessage/Claim/Details/Reponses/Response') as a(n)

谢谢

m4pnthwp

m4pnthwp1#

请考虑以下查询,这些查询演示了正确访问命名空间引用元素的两种方法:
第一个
请注意,查询中的名称空间前缀foo与原始XML中的hb不匹配。需要与XML匹配的不是前缀,而是它们引用的名称空间,在所有情况下,名称空间都是address.co.za/messaging

相关问题