使用xpath从嵌套的xml文档中提取元素 - SOAPUI

时间:2015-04-17 00:00:08

标签: xml xpath nested soapui

下面是我的xml:

<s:Fault>
 <faultcode  xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundat      ion/dispatcher">
a:InternalServiceFault
 </faultcode>
 <faultstring     xml:lang="en-NZ">**<![CDATA[<ns0:Root                       xmlns:ns0="http://NZPost.EAI.UnifiedTracking.Schemas.FaultMessage">
  <FaultCode>NZPUT004</FaultCode>
  <Reason>"**Object reference not set to an instance of an object.**"    </Reason>
  </ns0:Root>]]**>
 </faultstring>
 .
 .
 .
</s:fault>

我想在SoapUI中使用断言来确认响应包含文本“对象引用未设置为对象的实例”。但我不知道应该在声明段中使用的xpath来到达Reason标记。

我能够导航到上面的示例中,但是当我编写faultString // FaultCode或faultString时消息//消息它会抛出一个错误,表示当前响应中没有匹配。

请帮忙!

1 个答案:

答案 0 :(得分:1)

您无法使用路径导航Cdata标记的xml内容,但您可以将其作为字符串...因此您可以通过以下方式解析它 substring-after和substring-before方法或正则表达式

substring-before(substring-after(.//*[local-name()='faultstring'] , 'Reason&gt;') , '&lt;/Reason')

结果将是

"**Object reference not set to an instance of an object.**"

contains(.//*[local-name()='faultstring'] , '**Object reference not set to an instance of an object.**')

将导致

true

我希望这可以帮助