gpt4 book ai didi

sql - 使用 SQL Server 中的命名空间解析 XML

转载 作者:行者123 更新时间:2023-12-04 04:45:52 25 4
gpt4 key购买 nike

我很难解析定义了一些命名空间的 XML:

<TravelItineraryReadRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="2.2.0">    
<TravelItinerary xmlns="http://webservices.sabre.com/sabreXML/2011/10">
<CustomerInfo>
<PersonName WithInfant="false" NameNumber="01.01" RPH="1">
<GivenName>JEFF S</GivenName>"

XMl 存储在名为 response 的 XML 类型列中,我想获取 GivenName 值,为此我使用以下查询:
;WITH XMLNAMESPACES (DEFAULT 'http://webservices.sabre.com/sabreXML/2011/10')
select
response.value('(/TravelItineraryReadRS/TravelItinerary/CustomerInfo/PersonName[1]/GivenName)[1]', 'nvarchar(50)') AS Name
from dbo.RezMonitorXMLdataTest where locator = 'GUBXRV'

但结果我没有得到 JEFF S,而是得到了 NULL。我认为这可能与使用的命名空间有关。有谁知道我怎么能得到 GivenName 值?

提前致谢,

古兹曼

最佳答案

由于您的 顶级节点<TravelItineraryReadRS>不是 XML 命名空间的一部分,您不能使用 DEFAULT预选赛。相反,您必须定义一个 XML namespace 前缀,并将其包含在您的 XQuery 中:

;WITH XMLNAMESPACES ('http://webservices.sabre.com/sabreXML/2011/10' AS ns)
SELECT
XmLContent.value('(/TravelItineraryReadRS/ns:TravelItinerary/ns:CustomerInfo/ns:PersonName[1]/ns:GivenName)[1]', 'nvarchar(50)') AS Name
FROM
dbo.RezMonitorXMLdataTest
WHERE
locator = 'GUBXRV'

关于sql - 使用 SQL Server 中的命名空间解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18192022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com