无法从 soapui 获取 xpath 值

not able to get xpath value from soapui

我无法在 soapui 中获取以下 xml 的 xpath 值 "MatchFound"。 我正在尝试 属性 传输功能。

我尝试了以下 XPath:

declare namespace ns0='http://KYC/';
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
/soapenv:Envelope/soapenv:Body/BarclaysCustomerValidationResponse/oCasaDetailByRefNoDetails/oCasaStatusByRefNoDetails/oRiskProfileClientData/oGetFraudInformationData/oAddressVerificationDetails/ns0:matchedFound

XML :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <BarclsCustomerValidationResponse xmlns="http://BHKYC/BarclaysCustomerValidation.tws">
         <oCasaByIdNoDetails>
            <ns0:casaByIdNoResults xmlns:ns0="http://KYC">
               <ns0:item/>
            </ns0:casaByIdNoResults>
         </oCasaByIdNoDetails>
         <oCasaDetailByRefNoDetails/>
         <oCasaStatusByRefNoDetails/>
         <oRiskProfileClientData/>
         <oGetFraudInformationData/>
         <oAddressVerificationDetails>
            <ns0:enquiryid xmlns:ns0="http://KYC">51644325</ns0:enquiryid>
            <ns0:enquiryresultid xmlns:ns0="http://KYC">52146422</ns0:enquiryresultid>
            <ns0:matchedFound xmlns:ns0="http://KYC">false</ns0:matchedFound>
            <ns0:numberOfMatches xmlns:ns0="http://KYC">1</ns0:numberOfMatches>
            <ns0:firstMatchUpdatedDate xmlns:ns0="http://KYC">2016-03-31</ns0:firstMatchUpdatedDate>
            <ns0:secondMatchUpdatedDate xmlns:ns0="http://KYC"/>
            <ns0:mostRecentAddressIsMatched xmlns:ns0="http://KYC">false</ns0:mostRecentAddressIsMatched>
         </oAddressVerificationDetails>
         <oCasaPS/>
         <pid>21691</pid>
      </BarclsCustomerValidationResponse>
   </soapenv:Body>
</soapenv:Envelope>

BarclaysCustomerValidationResponse 位于命名空间 http://BHKYC/BarclaysCustomerValidation.tws 中,因此您的 XPath 表达式 /BarclaysCustomerValidationResponse/ 无法找到它。它的子元素也是如此,除非它们具有特定的名称空间前缀,例如 ns0:.

以下是一些问题:

  • 分配给 XPath/XQuery 中的 ns0 的命名空间 URI 与 XML
  • 中的不匹配
  • XML 在 BarclsCustomerValidationResponse 元素处声明了 默认命名空间 。这意味着 BarclsCustomerValidationResponse 和所有没有前缀的后代元素都在同一个命名空间中。您需要声明另一个前缀,将其映射到默认名称空间 URI,并在 XPath
  • 中相应地使用该前缀

以下对我有效:

declare namespace ns0='http://KYC';
declare namespace d='http://BHKYC/BarclaysCustomerValidation.tws';
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';

/soapenv:Envelope
/soapenv:Body
/d:BarclsCustomerValidationResponse
/d:oAddressVerificationDetails
/ns0:matchedFound

演示:http://www.xpathtester.com/xquery/b8f1f1e9e0c64af37a2e398d5b911569

只是为了在 SoapUI 中阅读 XML,您不需要为名称空间操心。正如您所发现的,它们使 XPath 不必要地复杂化。对于您的情况,像这样简单的事情就足够了。

//*:matchedFound