微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有多个属性的XML查询

我有以下 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值.

如果我删除所有’mapping / uri’,我确实将所有值连接在一起,即displayname,service,uri,serviceNumber,它看起来像这样:
mydisplaynamemyservicemyurimynumber

解决方法

尝试将findtype前缀添加到xpath中的mapping和uri.

这些元素也与findServiceResponse位于同一名称空间中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。