2016-09-22 7 views
0

私はここ数日からこのJava API(XMLUuit.jar)を作成しています。 XMLUnit APIを使用してXMLタグのいくつかのパラメータをスキップして、2つのXMLファイルを比較したいとします。いくつかのタグの属性をスキップしてXMLUnitを使用して2つのXMLを比較します

<emp> 
    <name id="1">xyz</name> 
</emp> 
<emp> 
    <name id="2">xyz</name> 
</emp> 

私はid属性の比較をスキップする場合は、これら2つのファイルは同じです。 要件がこのようなシナリオがいくつかあります。

答えて

0

あなたがDifferenceEvaluator

import org.w3c.dom.Attr; 
import org.xmlunit.builder.DiffBuilder; 
import org.xmlunit.diff.*; 
import org.xmlunit.util.Nodes; 

public class AttributesTest { 

    public static void main(String[] args) { 
     Diff d = DiffBuilder.compare("<emp>\n" + 
            " <name id=\"1\">xyz</name>\n" + 
            "</emp>") 
      .withTest("<emp>\n" + 
         " <name id=\"2\">xyz</name>\n" + 
         "</emp>") 
      .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byName)) 
      .withDifferenceEvaluator((comparison, outcome) -> { 
        if (outcome != ComparisonResult.EQUAL && comparison.getType() == ComparisonType.ATTR_VALUE) { 
         Attr a = (Attr) comparison.getControlDetails().getTarget(); 
         if ("id".equals(Nodes.getQName(a).getLocalPart()) 
          && "name".equals(Nodes.getQName(a.getOwnerElement()).getLocalPart())) { 
          return ComparisonResult.EQUAL; 
         } 
        } 
        return outcome; 
       }) 
      .build(); 
     System.err.println("Differences? " + d.hasDifferences()); 
    } 

} 
+0

こんにちは先生を実装し、特定の違いを抑制するために、私が使用している ジャーは、このフォルダ構造を有しておらず、「DiffBuilder」クラスでは、JARに存在しません。 このJARファイルを入手できるリンクフォームを提供できますか? ありがとうございます –

+0

2.xではなくXMLUnit 1.xを使用している可能性があります。 2.xのdetaiilsについては、http://www.xmlunit.org/またはhttps://github.com/xmlunit/xmlunitを参照してください。 –

関連する問題