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

SQL Server 2019查询带默认命名空间的XML无法取值如何解决?

SQL Server XML提取Header属性问题排查

首先可以确认,你定义的默认命名空间完全正确,问题出在节点定位和属性提取逻辑上,具体错误点如下:

错误原因

  • 节点定位层级错误:nodes()方法指定的路径仅到CompanyListMessage节点,此时h变量指向的是<CompanyListMessage>节点,而非其子节点<Header>,自然无法直接提取Header的属性。
  • 属性提取逻辑错误:GeneratedAt是<Header>节点的属性,不是带有文本内容的独立子节点,(GeneratedAt/text())[1]的路径不存在,一定会返回空值。

正确实现方案

方案1(推荐):直接定位到Header节点

路径清晰,查询性能更好,适合只需要提取Header属性的场景:

WITH XMLNAMESPACES(DEFAULT N'http://www.ediel.no/Export')
SELECT
    t.file_name, 
    t.file_created_time,
    h.value(N'@GeneratedAt', 'varchar(50)') AS GeneratedAt,
    h.value(N'@SenderApplication', 'varchar(100)') AS SenderApplication
FROM
    load.ediel_actors t
OUTER APPLY
    t.xml_data.nodes('/ExportPartyAddressingResponse/CompanyListMessage/Header') AS header(h)

方案2:保留原节点定位,补全Header层级

如果你需要同时提取CompanyListMessage下其他节点的内容,可以使用这个写法:

WITH XMLNAMESPACES(DEFAULT N'http://www.ediel.no/Export')
SELECT
    t.file_name, 
    t.file_created_time,
    h.value(N'(Header/@GeneratedAt)[1]', 'varchar(50)') AS GeneratedAt,
    h.value(N'(Header/@SenderApplication)[1]', 'varchar(100)') AS SenderApplication
FROM
    load.ediel_actors t
OUTER APPLY
    t.xml_data.nodes('/ExportPartyAddressingResponse/CompanyListMessage') AS header(h)

逻辑验证

你可以用静态XML片段快速验证逻辑正确性,运行以下代码可直接输出Header的两个属性:

DECLARE @xml XML = N'
<ExportPartyAddressingResponse xmlns="http://www.ediel.no/Export">
  <CompanyListMessage>
    <Header GeneratedAt="2021-11-11T05:00:02Z" SenderApplication="www.ediel.se" />
  </CompanyListMessage>
</ExportPartyAddressingResponse>';

WITH XMLNAMESPACES(DEFAULT N'http://www.ediel.no/Export')
SELECT
    @xml.value(N'(/ExportPartyAddressingResponse/CompanyListMessage/Header/@GeneratedAt)[1]', 'varchar(50)') AS GeneratedAt,
    @xml.value(N'(/ExportPartyAddressingResponse/CompanyListMessage/Header/@SenderApplication)[1]', 'varchar(100)') AS SenderApplication

内容的提问来源于stack exchange,提问作者Mattias W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:15:02