2016-09-22 1 views
0

Je travaille sur cette API Java (XMLUuit.jar) depuis quelques jours. Je souhaite comparer deux fichiers XML en ignorant quelques paramètres d'une balise XML à l'aide de l'API XMLUnit.Comparer deux XML en utilisant XMLUnit en ignorant quelques attributs de certains TAG

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

ces deux fichiers sont identiques si je sauter la comparaison de l'attribut id. J'ai quelques scénarios où les exigences sont comme ça. Des suggestions ????

Répondre

0

Afin de supprimer certaines différences que vous mettre en œuvre une 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

Bonjour monsieur, Jar j'utilise est de ne pas avoir cette structure de dossier et la classe « DiffBuilder » est pas présent dans JAR. Pouvez-vous fournir le formulaire de lien où je peux obtenir ce fichier JAR ?? Merci –

+0

Vous utilisez probablement XMLUnit 1.x plutôt que 2.x. Voir http://www.xmlunit.org/ ou https://github.com/xmlunit/xmlunitpour detaiils sur 2.x. –