我有以下XML:
<LoSTResponseBodyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<LoSTResponseAdapter xmlns="urn:adapt:xml:ns:DataTypes:2.0">
<findServiceResponse xmlns="urn:lost:params:xml:ns:lost1">
<mapping sourceId="9999" expires="2015-08-24T14:27:58Z" lastUpdated="2015-06-17T21:36:43Z" source="mysourcename">
<displayName xml:lang="en">mydisplayname</displayName>
<service>myservice</service>
<uri>myuri</uri>
<serviceNumber>mynumber</serviceNumber>
</mapping>
</findServiceResponse>
</LoSTResponseAdapter>
</LoSTResponseBodyType>
如何检索<uri>
的值,即myuri
?
我尝试过以下代码
WITH xmlnamespaces ('urn:adapt:xml:ns:DataTypes:2.0' as datatype,
'urn:lost:params:xml:ns:lost1' as findtype)
SELECT EventBody.value('(/LoSTResponseBodyType/datatype:LoSTResponseAdapter/findtype:findServiceResponse/mapping/uri)[1]', 'varchar(max)')
FROM mytable
我的值为NULL。
如果我删除所有内容&#39; mapping / uri&#39;,我确实将所有值连接在一起,即displayname,service,uri,serviceNumber,它看起来像这样: mydisplaynamemyservicemyurimynumber
答案 0 :(得分:1)
尝试在xpath中将findtype
前缀添加到mapping
和uri
。
这些元素与findServiceResponse
也在同一名称空间中。