无法从 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
我无法在 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