使用 xpath 从嵌套 xml 文档中提取元素 - SOAPUI
Using xpath to extract an element out of nested xml document - 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 中使用断言来确认响应包含文本 "Object reference not set to an instance of an object"。但是我不知道应该在声明段中使用xpath来到达Reason标签。
我可以导航到上面的示例,但在我编写 faultString//FaultCode 或 faultString//Message 时,它会抛出一个错误,指出当前响应中没有匹配项。
请帮忙!
您无法使用路径导航 Cdata 标记的 xml 内容,但您可以将其作为字符串获取。因此您可以通过以下方式解析它
substring-after 和 substring-before 方法或通过正则表达式
substring-before(substring-after(.//*[local-name()='faultstring'] , 'Reason>') , '</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
希望对您有所帮助
您好,下面是我的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 中使用断言来确认响应包含文本 "Object reference not set to an instance of an object"。但是我不知道应该在声明段中使用xpath来到达Reason标签。
我可以导航到上面的示例,但在我编写 faultString//FaultCode 或 faultString//Message 时,它会抛出一个错误,指出当前响应中没有匹配项。
请帮忙!
您无法使用路径导航 Cdata 标记的 xml 内容,但您可以将其作为字符串获取。因此您可以通过以下方式解析它 substring-after 和 substring-before 方法或通过正则表达式
substring-before(substring-after(.//*[local-name()='faultstring'] , 'Reason>') , '</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
希望对您有所帮助