2017-06-06 3 views
0

Quels sont les changements que je dois faire si j'utilise jdk 7 et que je veux utiliser l'expression lambda? Je compare 2 fichiers XML et à ignorer les noeuds spécifiques à l'aide d'où cette expressioncomment utiliser l'expression lambda pour jdk 7 ou des versions plus anciennes

final Diff documentDiff = DiffBuilder 
      .compare(expectedSource) 
      .withTest(actualSource) 
      .withNodeFilter(node -> !node.getNodeName().equals(someName)) 
      .build(); 

error: Syntax error on token '-',-- expected

+1

Vraiment, vous ne pouvez pas. Les Lambdas sont seulement dans Java 8 et au-dessus. –

+0

Aucune suggestion sur la façon de comparer deux fichiers xml ignorant des balises spécifiques en utilisant java – Fraction

+1

Vous pouvez seulement utiliser lambda dans java 8. Jusqu'à ce que vous ouvriez une nouvelle question sur "comment comparer deux fichiers xml en ignorant des balises spécifiques", vous devriez écrire XSLT. vous voulez comparer. –

Répondre

0

expression lambda ne peut pas être utilisé dans Java 7. La syntaxe est elle-même autorisée que dans java8. Cependant, la fonctionnalité que vous pouvez réaliser en écrivant plus de code ou sans utiliser l'expression lamda. Vous devez écrire une méthode de filtrage qui vérifie le nom du noeud avec someName si elle renvoie true, puis poursuivre avec le document de construction Difference. Vous devrez écrire plusieurs instructions et, dans certains cas, vérifier l'égalité des noms.

Vous pouvez également y parvenir en utilisant xslt. ce qui est très rapide pour les longs fichiers XML, mais vous devrez alors écrire beaucoup de code car xslt est déclaratif et basé sur la programmation fonctionnelle.

1

Essayez ceci.

final Diff documentDiff = DiffBuilder 
     .compare(expectedSource) 
     .withTest(actualSource) 
     .withNodeFilter(new Predicate<Node>() { 
      @Override 
      public boolean test(Node node) { 
       return !node.getNodeName().equals(someName); 
      } 
     }) 
     .build(); 

Ceci est redondant, mais JDK7 l'acceptera. Je ne sais pas si vous pouvez réaliser ce que vous voulez faire avec cela.

+0

Erreur: La méthode compare (String) n'est pas définie pour le type DiffBuilder; ajouté commons-codec1.9 jar ainsi pour diffbuilder – Fraction

+0

tous les autres pots à ajouter ou modifications? @ saka1029 – Fraction

+0

Voir [this] (http://www.xmlunit.org/api/java/2.0.0/org/xmlunit/builder/DiffBuilder.html#compare-java.lang.Object-). – saka1029