2013-10-01 104 views
0

的标记元素的值我有以下XML查询:如何选择所有给定节点下的标签没有得到在XML

 <return> 
     <code>success</code> 
     <message/> 
     <deal> 
      <checksum>203591</checksum> 
      <documentID>21783</documentID> 
      <dealStatus>P</dealStatus> 
      <financing> 
       <financeType>L</financeType> 
       <term>32</term> 
      </financing> 
      <options> 
       <disclosureType/> 
       <frontBackFlag>P</frontBackFlag> 
       <hardSoftFlag>M</hardSoftFlag> 
       <optionCode>TO</optionCode> 
       <optionDescription>QAfhggddate DOCID 219</optionDescription> 
       <optionOrigin>xxx</optionOrigin> 
       <optionPrice> 
       <optionPricingType>INVIICE</optionPricingType> 
       <price>111.99</price> 
       </optionPrice> 
       <optionPrice> 
       <optionPricingType>RETAIL</optionPricingType> 
       <price>2.99</price> 
       </optionPrice> 
       <optionResidualAmount>3.99</optionResidualAmount> 
       <residualTableAmount>0.00</residualTableAmount> 
       <residualTableFlag>N</residualTableFlag> 
       <satisfiedDate>2012-05-08T00:00:00-06:00</satisfiedDate> 
      </options> 
     </deal> 
    </return> 

我需要把一个检查点,以验证上述反应只有场在我们的规格中提到。例如。 optionPrice应该只有optionPricingType &价格标签。所以如何编写xpath或xqery来获取optionPrice下的所有标签而没有它们的值。

我使用SOAP UI把断言

+0

success XXX 发票 111.99 零售 222。99 user2833969

回答

1

接下来的XPath将从optionPrice提取节点名称:

/return/deal/options/optionPrice/*/local-name() 
2
  1. 据了SoapUI的 “Functional Testing” 的文件,您可以就断言架构遵从。我建议使用此工具来验证响应是否符合您的规范。如果你想/不得不使用XPath,这里有一些想法。假设XPath 2.0在SoapUI中可用,“XPath和XQuery Match断言都使用支持该领域大部分最新标准的Saxon XPath/XQuery处理器。”参考:Validating XML Messages

(#2待续......)您可以测试已知元素的存在(所有预期成果将是真实的):

boolean(/return) 
boolean(/return/code) 
boolean(/return/deal) 
boolean(/return/deal/checksum) 

等。注意,这不测试元素排序,这对您而言可能是重要的,也可能不重要。

可以测试没有未知的元素的(预期的结果将是真实的):

min(for $elName in //*/local-name() return $elName = ('return','code','message','deal','checksum','documentID','dealStatus','financing','financeType','term','options','disclosureType','frontBackFlag','hardSoftFlag','optionCode','optionDescription','optionOrigin','optionPrice','optionPricingType','price','optionPrice','optionPricingType','price','optionResidualAmount','residualTableAmount','residualTableFlag','satisfiedDate')) 

注意事项使用min在布尔值列表的黑客有效执行逻辑,并通过传球每个单独的标签名称测试结果。

您可以通过XPath断言进行各种其他抽查,但如果可能的话,尽量使用#1中提到的模式一致性设施。

相关问题