SoapUI 属性 传输:如何使用 xpath 从 XML 中提取项目?
SoapUI Property Transfer: How to extract items from XML using xpath?
我正在 运行我的机器上安装 SoapUI 以检查一些 RESTful 网络服务。
服务器给我以下结构
<Response xmlns="http://localhost/filter">
<data>
<e>
<ticket>
<reason>Bla bla bla</reason>
<number>98765</number>
</ticket>
<number>1234</number>
<content>Some stuff here</content>
</e>
<e>
<number>23455</number>
<content>Some stuff here 2</content>
</e>
</data>
</Response>
我想要 运行 一些测试用例,但我需要常规号码(此处:1234、23455)。
//*:number[1]
只会给我票号(这里是:98765)。当运行宁
//*:content[1]
它带来了短语 'Some stuff here',所以它似乎有效,因为它选择了正确的 xml 结构。
但是为什么 SoapUI 给我发送了错误的号码?
我尝试使用命名空间,但它也不起作用。最重要的是,SO成员在另一个主题中说,名称空间不是强制性的。
编辑:
现在,它起作用了。
我试过了
this albciff 的解决方案。
使用
(//*[local-name()='number'])[1]
而不是
//*[local-name()='number'][1]
会起作用。该语句仍然需要括号。
//*:number[1]
或 //*[local-name() = 'number'][1]
selects all number
输入文档中的第一个子元素他们的父元素:
<number>98765</number>
-----------------------
<number>1234</number>
-----------------------
<number>23455</number>
我怀疑您的 XPath 环境只有 return第一个 结果节点(如果有多个)。要 select 其他号码,您可以使用
//*:e/*:number[1]
或
//*[local-name() = 'e']/*[local-name() = 'number'][1]
结果将是(各个结果由 -------
分隔):
<number>1234</number>
-----------------------
<number>23455</number>
同样,您的 XPath 引擎很可能只会 return 这些结果中的第一个。
我正在 运行我的机器上安装 SoapUI 以检查一些 RESTful 网络服务。
服务器给我以下结构
<Response xmlns="http://localhost/filter">
<data>
<e>
<ticket>
<reason>Bla bla bla</reason>
<number>98765</number>
</ticket>
<number>1234</number>
<content>Some stuff here</content>
</e>
<e>
<number>23455</number>
<content>Some stuff here 2</content>
</e>
</data>
</Response>
我想要 运行 一些测试用例,但我需要常规号码(此处:1234、23455)。
//*:number[1]
只会给我票号(这里是:98765)。当运行宁
//*:content[1]
它带来了短语 'Some stuff here',所以它似乎有效,因为它选择了正确的 xml 结构。 但是为什么 SoapUI 给我发送了错误的号码?
我尝试使用命名空间,但它也不起作用。最重要的是,SO成员在另一个主题中说,名称空间不是强制性的。
编辑: 现在,它起作用了。 我试过了 this albciff 的解决方案。 使用
(//*[local-name()='number'])[1]
而不是
//*[local-name()='number'][1]
会起作用。该语句仍然需要括号。
//*:number[1]
或 //*[local-name() = 'number'][1]
selects all number
输入文档中的第一个子元素他们的父元素:
<number>98765</number>
-----------------------
<number>1234</number>
-----------------------
<number>23455</number>
我怀疑您的 XPath 环境只有 return第一个 结果节点(如果有多个)。要 select 其他号码,您可以使用
//*:e/*:number[1]
或
//*[local-name() = 'e']/*[local-name() = 'number'][1]
结果将是(各个结果由 -------
分隔):
<number>1234</number>
-----------------------
<number>23455</number>
同样,您的 XPath 引擎很可能只会 return 这些结果中的第一个。