0

我们有一个可以将 SOAP 请求传递到的 Oracle SOA 网关设置。现在,我正在尝试使用 SoapUI 创建测试用例。在这个特定的项目中,我正在尝试创建一个客户帐户。我已经完成了骨架设置,但是在设置正确的 XPath 以从 SOAP 响应中提取帐户 ID 时遇到问题。

我从 SOA 网关得到的响应是:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Header/>
   <env:Body>
      <OutputParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/apps/hz/soaprovider/plsql/hz_cust_account_v2pub/create_cust_account__1/">
         <X_CUST_ACCOUNT_ID>1459660</X_CUST_ACCOUNT_ID>
         <X_ACCOUNT_NUMBER>58946</X_ACCOUNT_NUMBER>
         <X_PARTY_ID>3101110</X_PARTY_ID>
         <X_PARTY_NUMBER>215767</X_PARTY_NUMBER>
         <X_PROFILE_ID>3322847</X_PROFILE_ID>
         <X_RETURN_STATUS>S</X_RETURN_STATUS>
         <X_MSG_COUNT>0</X_MSG_COUNT>
         <X_MSG_DATA xsi:nil="true"/>
      </OutputParameters>
   </env:Body>
</env:Envelope>

由此,我试图提取返回的X_CUST_ACCOUNT_ID,并将其放入一个属性中。我正在使用的 XPath 是

//OutputParameters/X_CUST_ACCOUNT_ID 

但是,这样做,我得到的只是一个错误说明

“源 XPath 缺少匹配项 [//OutputParameters/X_CUST_ACCOUNT_ID]”

我花了几个小时尝试各种 XPath 表达式,但得到的只是缺少匹配或语法错误。

4

1 回答 1

2

OutputParameters您错过了一个由定义的默认命名空间的事实

xmlns="http://xmlns.oracle.com/apps/hz/soaprovider/plsql/hz_cust_account_v2pub/create_cust_account__1/"

要同时忽略此命名空间,您可以使用以下表达式:

//*[local-name()='OutputParameters']/*[local-name()='X_CUST_ACCOUNT_ID']
于 2018-09-05T17:44:41.500 回答