从xml中提取路径

时间:2015-07-08 08:12:33

标签: xml xpath jmeter

我试图从Jmeter上返回的XML响应中提取特定的Xpath。

示例响应XML:

<?xml version="1.0" encoding="UTF-8"?>
<Responses>
<Rate href="http://test.com/psi?attribute1=x&attribute2=y">
<Cost currency='USD'>10</Cost>
</Rate>
</Responses>

我正在使用http://codebeautify.org/Xpath-Tester#来获取XPATH。 我需要成本“10”。 我正在查看Xpath - // Responses / Rate / Cost / text()但这会返回空值。 现在我将我的XML更新为(注意:删除了href部分)

<?xml version="1.0" encoding="UTF-8"?>
<Responses>
<Rate>
<Cost currency='USD'>10</Cost>
</Rate>
</Responses>

相同的XPATH //响应/费率/成本/文本()现在返回“Text = 10”。 知道href造成了什么问题吗?

2 个答案:

答案 0 :(得分:1)

我尝试了你的xml,JMeter给了我:

  

断言失败消息:对实体“attribute2”的引用必须以“;”结尾分隔符。   有关详细信息,请参阅日志文件。

日志包含:

  

2015/07/08 10:46:26错误 - jmeter.util.XPathUtil:Type = Val = false Tol = false org.xml.sax.SAXParseException; lineNumber:1; columnNumber:107;对实体“attribute2”的引用必须以“;”结尾分隔符。

     

2015/07/08 10:46:26 WARN - jmeter.extractor.XPathExtractor:处理时出现SAX异常(// Responses / Rate / Cost /)对实体“attribute2”的引用必须以';'结尾分隔符。

所以问题是由于错误的XML,你应该:

 <?xml version="1.0" encoding="UTF-8"?>
 <Responses>
 <Rate href="http://test.com/psi?attribute1=x&amp;attribute2=y">
 <Cost currency='USD'>10</Cost>
 </Rate>
 </Responses>

答案 1 :(得分:1)

感谢大家的建议。问题在于XPATH的框架。 有很多问题:

  1. 我无法控制响应XML
  2. http://codebeautify.org/xmlviewer对我不起作用:我尝试改变我的xpath但没有取回任何结果。
  3. http://www.freeformatter.com/xpath-tester.html工作得更好:它不仅验证了我的XML,还让我自由地在jmeter中实际使用它之前改变我的xpath
  4. 总而言之,问题是错误的XPATH。 获得的经验教训:在实际输入jmeter之前,请务必检查freeformatter(或任何其他类似工具)上的xpath。