Fichiers XML
En comparant des fichiers en mode XML (définis avec une option CLI --mode=xml), vous pouvez consulter le rapport de comparaison uniquement sous le format XML (--output-mode=xml). Pour comprendre comment les différences sont rapportées sous le format XML, nous partons du principe que les deux fichiers XML ci-dessous doivent être comparés côte-à-côte.
<book id="1"> | <book id="2"> |
Vous pouvez voir qu’il y a deux différences : (i) dans la valeur de l’attribut id de l’élément book dans le ligne 1; et (ii) dans le contenu du texte de l’élément author dans la ligne 2.
Dans DiffDog Server, vous pouvez exécuter la commande ci-dessous pour comparer ces deux fichiers XML et obtenir un rapport de comparaison sous format XML.
diffdogcmdlclient diff file1.xml file2.xml --mode=xml --output-mode=xml --output-file=report.xml
•L'option --mode traite les fichiers comparés en tant que XML (pas en tant que texte ou binaire).
•L’option --output-mode pour les comparaisons XML (mode) doit être XML.
•L'option --output-file spécifie le chemin vers le fichier de rapport généré.
•Puisqu’il n’existe aucune option --quiet=true, le rapport de comparaison sera généré à la ligne de commande ainsi qu’à un fichier de sortie. Voir « Formats de rapports » sous la rubrique Résultats de comparaison.
Rapport XML
Dans le rapport XML produit après avoir exécuté la comparaison, les différences sont rapportées comme suit :
<?xml version="1.0" encoding="UTF-8"?>
<!-- Differencing export generated by Altova DiffDog Server -->
<diff_result>
<diff_info comparison_mode="xml">
<source_left name="c:\file1.xml" uri="file:///c:/file1.xml"/>
<source_right name="c:\file2.xml" uri="file:///c:/file2.xml"/>
</diff_info>
<xml_diff>
<left_location>
<parent xpath="/book"/>
<position>1</position>
</left_location>
<right_location>
<parent xpath="/book"/>
<position>1</position>
</right_location>
<left_content>
<attribute id="1"/>
</left_content>
<right_content>
<attribute id="2"/>
</right_content>
</xml_diff>
<xml_diff>
<left_location>
<parent xpath="/book/author"/>
<position>1</position>
</left_location>
<right_location>
<parent xpath="/book/author"/>
<position>1</position>
</right_location>
<left_content>
<element>Mark Twain</element>
</left_content>
<right_content>
<element>Franz Kafka</element>
</right_content>
</xml_diff>
</diff_result>
Les points suivants décrivent le rapport XML :
•L'élément diff_info fournit des informations concernant les fichiers qui ont été comparés (y compris le mode de comparaison utilisé, et les chemins des fichiers comparés). Cet élément ne se produit qu'une seule fois. (L’attribut comparison_mode indique la valeur fournie pour l’option --mode à la ligne de commande - ou la valeur par défaut de l’option si aucune valeur n’a été fournie à la ligne de commande.)
•Les éléments text_diff précisent les différences XML trouvées. Leurs éléments enfant left_location et right_location, localisent chacun le nœud parent du nœud contenant la différence.
•Le nœud parent a un attribut xpath qui donne une expression de localisation XPath du nœud parent, et l’élément position donne la position du parent à l’intérieur de son nodeset contextuel.
•Dans la première différence (voir les fichiers source XML en haut de cette rubrique), le nœud contenant la différence est l’attribut id du seul élément book. Donc le parent du nœud @id est book, à savoir l’élément /book à la position 1 (puisqu’il n’y a qu’un élément book ; c’est le seul élément du document).
•Dans la seconde différence (voir les fichiers source XML en haut de cette rubrique), le nœud contenant la différence est le nœud du seul enfant author de l’élément book. Le parent de ce nœud texte, est donc le nœud author à la position 1 dans le nodeset renvoyé par l’expression du localisateur /book/author.
•Les éléments left_content et right_content, respectivement, contiennent les nœuds qui sont différents dans chaque xml_diff. Dans notre exemple ci-dessus, notez que, dans le premier xml_diff, le nœud qui est différent est l’attribut id de /book, alors que le deuxième xml_diff est le contenu de l’élément author qui est différent.