2017-06-16 51 views
2

所以我已经阅读了其他解析问题并回答了解析Coldfusion的SOAP响应。但是,在这种情况下,响应在格式上稍有不同,当我尝试使用xmlSearch解析它时,我得到一个空数组。用Coldfusion解析奇怪的SOAP响应

这里是肥皂响应我需要解析:

<?xml version="1.0" encoding="UTF-8"?> 
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
     <AuthorizeAndCaptureResponse xmlns="http://3DSI.org/WebServices/CreditCardTransaction"> 
     <AuthorizeAndCaptureResult xmlns:a="http://schemas.datacontract.org/2004/07/ThreeDelta.Web.Services.ECLinx.Definitions.CreditCardTransactionDefinitions" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
      <Succeeded xmlns="http://schemas.datacontract.org/2004/07/ThreeDelta.Web.Services.ECLinx.Definitions">false</Succeeded> 
      <ValidationFailures xmlns="http://schemas.datacontract.org/2004/07/ThreeDelta.Web.Services.ECLinx.Definitions" xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" /> 
      <a:FailureReason>PermissionDenied</a:FailureReason> 
      <a:ProcessorResponse i:nil="true" /> 
      <a:RuleInfringements xmlns:b="http://schemas.datacontract.org/2004/07/ThreeDelta.Web.Services.ECLinx.Definitions" i:nil="true" /> 
      <a:ThirdPartyResponse i:nil="true" /> 
      <a:Token i:nil="true" /> 
      <a:TotalAmount>0</a:TotalAmount> 
      <a:TransactionKey i:nil="true" /> 
      <a:TransactionWarning xmlns:b="http://schemas.datacontract.org/2004/07/ThreeDelta.Common.Enums" i:nil="true" /> 
      <a:AddressAvsResponse>None</a:AddressAvsResponse> 
      <a:CardSecurityCodeResponse>None</a:CardSecurityCodeResponse> 
      <a:PostalCodeAvsResponse>None</a:PostalCodeAvsResponse> 
      <a:ProcessorAvsResponse i:nil="true" /> 
      <a:ProcessorCardSecurityCodeResponse i:nil="true" /> 
      <a:AuthCode i:nil="true" /> 
      <a:CreditCardResponseStatus>None</a:CreditCardResponseStatus> 
     </AuthorizeAndCaptureResult> 
     </AuthorizeAndCaptureResponse> 
    </s:Body> 
</s:Envelope> 

我需要a:AuthCode值以及从阵列。我已经尝试过以下但没有运气。它返回一个空数组。

<cfset results = xmlSearch(soapResponse,"//*[local-name()='s:Envelope']") /> 
<cfdump var="#results#" /> 

任何帮助将不胜感激。

+0

我已经试过以下,但没有运气。它返回一个空数组。

+0

您使用的是什么版本的ColdFusion? CF版本之间存在XML实现差异。 – Alex

+0

版本是Coldfusion 11 –

回答

1

是否在执行xmlSearch之前解析SOAP字符串?

<cfset soapFile = XmlParse(SOAP-RESPONSE)> 
<cfset authCode = xmlSearch(soapFile, 'AuthCode') /> 

这对我有效。

+0

是的,我解析它之前。它上面的代码是:

+0

我知道它工作!您的回复告诉我从AuthCode中取消'a'。一旦我把它关闭,解析工作正常。谢谢你的帮助。 –