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 这些结果中的第一个。