1

我正在比较一个组件的 xml 文件。我有一些需要比较的节点。但我不需要比较所有节点。所以我在 xmlunit 中有任何方法可以只比较那些特定的节点。我使用 nodefilter 和属性过滤器来忽略某些节点。代码是

Diff myDiff1 =
   DiffBuilder.compare(actual.toString()).withTest(expected.toString())
      .ignoreWhitespace()
      .ignoreComments()
      .checkForSimilar()
      .withNodeMatcher( new DefaultNodeMatcher( ElementSelectors.byNameAndText ))
      .withNodeFilter( new Predicate<Node>() {
         // code to ignore nodes
         public boolean test( Node n ) {
            String temp = Nodes.getQName(n).getLocalPart();
            if (values.contains(temp)) {
               // System.out.println(temp);
            }
            return !( n instanceof Element && values.contains( temp ));
         }
      })
      .withAttributeFilter(new Predicate<Attr>(){
         public boolean test( Attr n ) {
            // code to ignore Attributes 
            javax.xml.namespace.QName attrName = Nodes.getQName(n);
            // System.out.println(attrName.toString()); 
            QName Temp = new QName();
            // System.out.println(Temp.toString()+n.toString());
            Boolean temp1 = !values.contains(attrName.toString());
            // Boolean temp1 =!attrName.toString().equals("id") ;
            // return !attrName.equals(new QName("balType",null,null,"curCode"));
            return temp1;
         }
      })
      .build();

但现在我只想比较某些需要的节点。这是因为 xml 非常大,大多数节点不同,但只有少数节点相等。

4

0 回答 0