我有这个soap响应,我需要获取标签platformMessage的值我写了一个xpath查询但是它不起作用,在jmeter中检查日志文件告诉我这个“前缀必须解析为命名空间:ns2”,继承了xpath查询
/S:Envelope[@xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"]/S:Body/ns2:activateProductResponse[@xmlns:ns2="http://ws.business.api.fulfillmentengine.com/"]/return/platformMessage
继承人xml
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:activateProductResponse xmlns:ns2="http://ws.business.api.fulfillmentengine.millicom.com/">
<return>
<platformCode>1</platformCode>
<platformMessage>Fail operation.El set-top box ya existe. Code Response:|22098: 22098: 1</platformMessage>
<responseCode>13</responseCode>
<responseMessage>Error executing action in platforn</responseMessage>
<UUID>3cb49b29-513e-11e6-b5db-005056807f0c</UUID>
<platformName>INTRAWAY</platformName>
</return>
</ns2:activateProductResponse>
</S:Body>
</S:Envelope>
答案 0 :(得分:0)
在xpath中使用@xmlns:ns2无效,因为尽管外观上的命名空间与属性不同。
如果启用“使用命名空间”,则以下xpath应该有效:
/S:Envelope/S:Body/ns2:activateProductResponse/return/platformMessage
或者,如果您想要一个脏(和慢)的解决方法,您可以像这样引用节点名称:
/*[local-name()='Envelope']/*[local-name()='Body']/*/[local-name()='activateProductResponse]/return/platformMessage
答案 1 :(得分:0)
你应该阅读:
https://jmeter.apache.org/usermanual/component_reference.html#XPath_Extractor
https://jmeter.apache.org/usermanual/component_reference.html#XPath_Assertion
特别注意:
作为JMeter所基于的Xalan XPath解析器实现的命名空间限制的工作循环,您可以提供包含命名空间前缀的映射的Properties文件: prefix1 =完整命名空间1 prefix2 =完整命名空间2 ... 您可以使用以下属性在jmeter.properties文件中引用此文件:
在jmeter.properties中查找此属性,并清楚地解释所有内容