2017-09-05 9 views
0

xml文字列があり、選択したノード値のみを比較し、その結果に対してテストケースをアサートしたいとします。 例えば:私は、次のXML文字列xmlの選択されたノード値のみを照合する方法は?

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <ns2:requestTransferResponse xmlns:ns2="http://external.interfaces.my.company.com/"> 
     <return> 
      <ersReference>2017051017472278401000061</ersReference> 
      <resultCode>0</resultCode> 
      <resultDescription>SUCCESS</resultDescription> 
      <receivedAmount> 
       <currency>BSD</currency> 
       <value>5500.00</value> 
      </receivedAmount> 
      <receiverPrincipal> 
       <principalId> 
        <id>SUBDIST1-1</id> 
        <type>RESELLERID</type> 
       </principalId> 
       <principalName>Sub Distributor 1</principalName> 
       <accounts> 
        <account> 
        <accountSpecifier> 
         <accountId>SUBDIST1-1</accountId> 
         <accountTypeId>RESELLER</accountTypeId> 
        </accountSpecifier> 
        <balance> 
         <currency>BSD</currency> 
         <value>985500.00</value> 
        </balance> 
        <creditLimit> 
         <currency>BSD</currency> 
         <value>0.00000</value> 
        </creditLimit> 
        </account> 
       </accounts> 
       <status>Active</status> 
       <msisdn>12420101000</msisdn> 
      </receiverPrincipal> 
      <requestedTransferAmount> 
       <currency>BSD</currency> 
       <value>5500</value> 
      </requestedTransferAmount> 
      <senderPrincipal> 
       <principalId> 
        <id>DIST1</id> 
        <type>RESELLERID</type> 
       </principalId> 
       <principalName>Distributor 1</principalName> 
       <accounts> 
        <account> 
        <accountSpecifier> 
         <accountId>DIST1</accountId> 
         <accountTypeId>RESELLER</accountTypeId> 
        </accountSpecifier> 
        <balance> 
         <currency>BSD</currency> 
         <value>1994429.24</value> 
        </balance> 
        <creditLimit> 
         <currency>BSD</currency> 
         <value>0.00000</value> 
        </creditLimit> 
        </account> 
       </accounts> 
       <status>Active</status> 
       <msisdn>12420100000</msisdn> 
      </senderPrincipal> 
     </return> 
     </ns2:requestTransferResponse> 
    </soap:Body> 
</soap:Envelope> 

を持っている今、私が欲しい検証XPathを持つ次のノードの値は、ノードの

1. //receiverPrincipal//balance//value i.e 985500.00 
2. //senderPrincipal//balance//value i.e. 1994429.24 

休息は必要ありません。だから私はインターネットを検索し、XmlUnitライブラリを見つけました。誰かがxpathノードの値を検証するためにこれをどのように使うことができるかについてのヒントを誰かが得られますか?

答えて

0

実際には、XPathで識別できるいくつかの選択されたテキストが必要な場合は、XMLUnitのXPathサポートが機能するはずです。あなたは、XPathのための唯一の一致があるだろう本当に確信している場合は、あなたの最初の要件

XPathEngine xpath = new JAXPXPathEngine(); 
String content = xpath.evaluate("//receiverPrincipal//balance/value/text()", source); 
assertEquals(985500.00, Double.valueOf(content), 1e-3); 

に(https://github.com/xmlunit/xmlunit/#asserting-an-xpath-valueを参照)XMLUnitのgithubのページから例を翻訳

使用Hamcrestはそれが

assertThat(source, EvaluateXPathMatcher.hasXPath("//receiverPrincipal//balance/value/text(), 
    equalTo("985500.00")) 
ようなものになるだろうマッチャ
関連する問題