在SQL Server中使用名称空间解析XML
我很难解析定义了一些名称空间的XML:在SQL Server中使用名称空间解析XML,sql,xquery-sql,Sql,Xquery Sql,我很难解析定义了一些名称空间的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"> <
<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>"
但结果不是得到JEFF S,而是得到NULL。我认为这可能与所使用的名称空间有关。有人知道我怎样才能得到GivenName值吗
提前感谢,
Guzman由于您的顶级节点
不是该XML名称空间的一部分,因此不能使用默认的限定符。相反,您必须定义XML名称空间前缀,并将其包含在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'
;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'