Извлечение идентификатора учетной записи из ответа Oracle SOA в SoapUI - PullRequest
0 голосов
/ 05 сентября 2018

У нас есть настройка шлюза Oracle SOA, в которую мы можем передавать запросы SOAP. Прямо сейчас я пытаюсь использовать SoapUI для создания тестовых случаев. В этом конкретном случае я пытаюсь создать учетную запись клиента. У меня есть настройка скелета, но у меня проблемы с настройкой правильного XPath для извлечения идентификатора учетной записи из ответа SOAP.

Ответ, который я получаю от шлюза 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, и все, что я получал, это либо отсутствие совпадений, либо синтаксические ошибки.

1 Ответ

0 голосов
/ 05 сентября 2018

Вы упустили тот факт, что 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']
...