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

SQL解析XML文档如何提取指定节点的@ID属性值

解决方案

你原有代码里的XPath路径索引位置写反,@ID[2]的含义是取当前RequestorID节点的第2个ID属性,但XML节点下同一属性名唯一,因此无法正常取值。你需要先匹配第2个RequestorID节点后再取它的ID属性,调整路径即可:

DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)

SELECT @XML = XMLData FROM XMLData

EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML

SELECT 
[RID]
FROM 
OPENXML(@hDoc, 'OTA_HotelPmsInfoNotif/HotelReservations/HotelReservation')
WITH 
(
[RID]                           varchar(5)      '../../POS/Source/RequestorID[2]/@ID'
) 

EXEC sp_xml_removedocument @hDoc
GO

更推荐使用SQL Server原生的XML节点查询方法,无需手动管理文档句柄,避免内存泄漏风险,示例如下:

DECLARE @XML AS XML
SELECT @XML = XMLData FROM XMLData

SELECT 
    T.HotelReservation.value('(../../POS/Source/RequestorID[2]/@ID)[1]', 'varchar(5)') AS RID
FROM @XML.nodes('OTA_HotelPmsInfoNotif/HotelReservations/HotelReservation') AS T(HotelReservation)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 14:36:04