XML-Dateien
Beim Vergleich von Dateien im XML-Modus (definiert mit der CLI-Option --mode=xml) können Sie den Vergleichsbericht nur im XML-Format anzeigen (--output-mode=xml). Um zu verstehen, wie Unterschiede im XML-Format ausgegeben werden, werfen Sie einen Blick auf die folgenden beiden XML-Dateien, die Seite an Seite verglichen werden:
<book id="1"> | <book id="2"> |
Sie sehen, dass die Dateien zwei Unterschiede enthalten: (i) einen in Zeile 1 im Wert des Attributs id des Elements book und (ii) einen in Zeile 2 im Textinhalt des Elements author.
In DiffDog Server können Sie diese beiden XML-Dateien mit dem folgenden Befehl vergleichen und einen Vergleichsbericht im XML-Format erhalten.
diffdogcmdlclient diff file1.xml file2.xml --mode=xml --output-mode=xml --output-file=report.xml
•Mit der Option --mode werden die verglichenen Dateien als XML (und nicht als Text- oder Binärdateien) behandelt.
•Die Option --output-mode muss bei Vergleichen im XML-Modus XML sein.
•Die Option --output-file definiert den Pfad zur generierten Berichtsdatei.
•Da keine --quiet=true-Option vorhanden ist, wird der Vergleichsbericht in der Befehlszeile und in Form einer Ausgabedatei generiert. Siehe "Berichtsformate" im Kapitel Vergleichsergebnisse.
XML-Bericht
Die Unterschiede werden nach Ausführung des Vergleichs folgendermaßen im XML-Bericht ausgegeben:
<?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>
Im XML-Bericht wird Folgendes beschrieben:
•Das Element diff_info ganz oben enthält Informationen über verglichene Dateien, darunter den Vergleichsmodus und die Pfade der verglichenen Dateien. Dieses Element kommt nur einmal vor. (Das Attribut comparison_mode gibt den Wert der Option --mode in der Befehlszeile an - oder den Standardwert der Option, wenn in der Befehlszeile kein Wert angegeben wurde).
•Die einzelnen xml_diff-Elemente enthalten die gefundenen XML-Unterschiede. In deren Child-Elementen left_location und right_location ist jeweils der Parent Node des Node angegeben, der den Unterschied enthält.
•Der parent Node hat ein xpath-Attribut, das den XPath Locator-Ausdruck des Parent Node enthält und das Element position gibt die Position des Parent innerhalb des Kontext-Nodeset an.
•Im ersten Unterschied (siehe XML-Quelldatei ganz oben in diesem Kapitel) ist der Node, der den Unterschied enthält, das Attribut id des einzigen book-Elements. Daher ist der Parent des @id-Node book, also das /book-Element an Position 1 (da nur ein einziges book-Element vorhanden ist; es ist das einzige Element und gleichzeitig das root-Element des Dokuments).
•Im zweiten Unterschied (siehe XML-Quelldatei ganz oben in diesem Kapitel) ist der Node, der den Unterschied enthält, der Text-Node des einzigen author Child-Elements des book-Elements. Der Parent dieses Text-Node ist somit der Node author an der Position 1 in dem vom Locator-Ausdruck /book/author zurückgegebenen Nodeset.
•Die Elemente left_content und right_content enthalten die jeweils die Nodes, die im jeweiligen xml_diff-Element Unterschiede aufweisen. Beachten Sie, dass in unserem obigen Beispiel im ersten xml_diff-Element der Node, der eine Änderung aufweist, das id-Attribut von book ist, während es im zweiten xml_diff-Element der Textinhalt das Elements author ist, das einen Unterschied aufweist.