Xpath选择多个命名空间的元素

时间:2016-10-25 10:57:59

标签: xslt xpath namespaces soapui

我在" http://ip/channels/api"响应这样的事情

<Channels resultCount="200" xmlns="urn:web:1.0">
   <Channel id="tv1"/>
   <Channel id="tv2"/>
</Channels>

我正在努力使用SoapUI工具从不同的API调用中使用XPath访问Channel元素。如果我尝试使用以下方法在同一个http请求中获取任何频道ID:

declare namespace ns1='urn:web:1.0';
//ns1:Channels[1]/ns1:Channel[1]/@id

我得到了正确的结果

  

TV1

但如果我尝试从不同的http请求获取频道ID,我的回复是空白的。我首先定义命名空间以达到http://ip/channels/api,然后为xmlns =&#34; urn:web:1.0&#34;定义另一个命名空间。但我不知道正确的语法来弥补这个电话。有人可以帮助指导我做正确的方法,或至少参考我应该搜索的正确术语吗?

1 个答案:

答案 0 :(得分:1)

假设您有两个请求。第一个是:

<Channels resultCount="200" xmlns="urn:web:1.0">
   <Channel id="tv1"/>
   <Channel id="tv2"/>
</Channels>

第二个:

<Channels resultCount="200" xmlns="http://ip/channels/api">
   <Channel id="tv1"/>
   <Channel id="tv2"/>
</Channels>

两者都有<Channel>元素,但来自不同的命名空间定义。

因此,如果要在SOAPUI中使用通用的 XPath ,可以使用*作为命名空间元素的通配符,这样就可以避免命名空间定义并直接访问{{ 1}} id attributes despiste这个节点如何嵌套在父元素上,以及它是名称空间。所以这样的事情必须适合你的情况:

<Channel>