Gibt es kostenlose Xml Diff / Merge-Tools? [geschlossen]

105

Ich habe mehrere Konfigurationsdateien in meinen .net-Anwendungen, in denen ich Anwendungseinstellungselemente usw. zusammenführen möchte.

Ich wollte gerade anfangen, es manuell zu machen, wie ich es normalerweise tue, dachte jedoch, dass irgendwo ein XML-Diff-GUI-Tool verfügbar sein muss.

Das Tool kann zur Elementebene wechseln, um die Unterschiede usw. zu vergleichen und anzuzeigen.

Google gab jedoch keine wesentlichen kostenlosen Tool-Ergebnisse und keine Hinweise auf irgendetwas Wertvolles.

Ist ein solches Tool verfügbar? Das ist sehr nützlich? Kostenlos?

Danke im Voraus. :) :)

Bearbeiten:

Hier ein paar Erläuterungen zu den Funktionen, die meinen fehleranfälligen, langwierigen manuellen Job in eine 1-minütige einfachere Aufgabe (und das Potenzial zur Automatisierung) verwandeln würden:

In KDiff3 können Sie ganze Verzeichnisse unterscheiden / zusammenführen. Es gibt einen hierarchischen Unterschied, der sehr genau, benutzerfreundlich und klar ist. Ich war daran interessiert, eine ähnliche Lösung zu finden, jedoch anstelle der Verzeichnishierarchie eine XML-Elementhierarchie.

Wenn es keine solche Open Source-Software gibt, denke ich darüber nach, eine auf CodePlex zu erstellen, um diese Funktionalität bereitzustellen.

Russell
quelle

Antworten:

11

KDiff3 ist nicht XML-spezifisch, aber kostenlos. Es macht einen guten Job beim Vergleichen und Zusammenführen von Textdateien.

Epotter
quelle
3
Ich bin damit einverstanden, dass ich derzeit KDiff3 verwende. Ein Tool speziell für XML, das bis auf Elementebene reichen könnte, wäre jedoch großartig.
Russell
2
Ich dachte aus dieser Perspektive: So wie KDiff einen hierarchischen Unterschied von Verzeichnissen macht, könnte auch ein hierarchischer Unterschied von Elementen funktionieren. Wenn sich also ein Element geändert hat, stimme ich zu, dass die übergeordneten Elemente ebenfalls als geändert gekennzeichnet werden sollten.
Russell
25
jeder erkennt , dass die untergeordneten Knoten in XML sind nicht in einer bestimmten Reihenfolge sein garantiert, so dass jedes „Werkzeug“, das diese etwas berichtete nicht von einer Datei in dem nächsten wirklich sein wird , kein wirkliche xml in der gleichen Reihenfolge war konformes Werkzeug
7
Wenn sich die Reihenfolge ändert, sind die Elemente unterschiedlich. Abhängig von der Semantik des betreffenden XML-Dokuments kann die Reihenfolge von Bedeutung sein oder auch nicht. ZB in XHTML ist natürlich die Reihenfolge wichtig.
George Lund
7
Der Punkt ist, dass ein reguläres Diff-Tool zeilenbasiert arbeitet. Es gibt spezielle Diff-Tools für z. B. CSV-Dateien, die das unterschiedliche Format verstehen. Je besser dieses Verständnis ist, desto effektiver kann die Differenzierung sein. Ein gutes XML-Diff-Tool wäre in der Lage, das XML zu analysieren, mithilfe eines Schemas Einschränkungen zu bestimmen, z. B. ob die Reihenfolge von Bedeutung ist, und dieses Wissen dann zu verwenden, um eine weitaus effektivere Diff / Merge-Erfahrung zu erzielen.
Stijn de Witt
32

Schauen Sie sich die Dateivergleichstools an , mit denen ich WinMerge verwende . Es kann XML-Dokumente vergleichen (möglicherweise möchten Sie den DisplayXMLFilesVorfilter aktivieren ).

DisplayXMLFiles.dll - Dieses Plugin druckt XML-Dateien durch Einfügen von Tabulatoren und Zeilenumbrüchen. Dies ist nützlich für XML-Dateien, für die an geeigneten Stellen keine Zeilenrückgabe vorhanden ist.

WinMerge in Aktion

Siehe auch meine Funktionsvergleichstabelle .

dma_k
quelle
6
+1 Winmerge Version 2.12.4.0; Menü "Plugin" -> "Liste" -> "Plugins aktivieren" aktivieren; Menü "Plugin" -> "Automatisches Auspacken" aktivieren. Getestet mit XML-Datei mit Dateinamen mit der Erweiterung .xml und es scheint zu funktionieren.
Alessandro Jacopson
10
Es kann nicht gut mit Attributen umgehen, die sich in unterschiedlichen Reihenfolgen befinden, daher ist die Nützlichkeit je nach Situation möglicherweise eingeschränkt.
Michael Kohne
Verwenden Sie diese Transformation zuerst für alle XML-Dateien, um Elemente und Attribute zu sortieren: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid
1
Das Plugin ist anscheinend nicht mehr verfügbar.
Fernando Gonzalez Sanchez
Ich bin nicht sicher, warum es nicht im Installationsprogramm ist, aber ich konnte es von ihrem src-Repo auf Bitbucket / Quellcode (Sourceforge DL) erhalten: bitbucket.org/winmerge/winmerge/src/…
aCodeMonkey
21

Ich habe eine Windows-Anwendung geschrieben und veröffentlicht, die speziell das Problem des Vergleichens und Zusammenführens von XML-Dateien löst.

Projekt: Zusammenführen kann Zwei- und Drei-Wege-Vergleiche und Zusammenführungen aller XML-Dateien durchführen (wobei zwei der Dateien als unabhängige Revisionen einer gemeinsamen Basisdatei betrachtet werden). Sie können es anweisen, Elemente in den Eingabedateien unter anderem anhand von Attributwerten oder des Inhalts untergeordneter Elemente zu identifizieren.

Es ist vollständig über die Befehlszeile steuerbar und kann auch Textberichte erstellen, die die Unterschiede zwischen den Dateien enthalten.

Projekt: Zusammenführen von drei XML-Dateien

UuDdLrLrSs
quelle
Hi @James Danke für die Info. Natürlich wäre es schön, wenn es kostenlos wäre, aber es bietet einige sehr coole Funktionen - und Ihr Beispiel oben ist ein Klassiker, warum dieses Tool soooo hilfreich ist! Danke für deinen Beitrag. :)
Russell
Ich habe Project :: Merge ausprobiert und konnte meine Aufgabe leider nicht bewältigen. Ich habe HTML-Text in paras ( <p>), der Formatierung hinzugefügt wird (wie <i>, <em>). Project :: Merge zeigt also, dass der vollständige Absatz geändert wurde und keine eingehende Wortanalyse durchgeführt wird.
dma_k
Ja, es tut mir leid zu sagen, dass die Unterstützung von XHTML (es wird niemals Legacy-HTML ausführen) in dieser Hinsicht ziemlich eingeschränkt ist, ebenso wie die Textdifferenzierung innerhalb von XML-Blöcken im Allgemeinen. Die meisten Arbeiten konzentrierten sich bisher auf XML-Dateien im Konfigurationsstil, bei denen Freiform-Zeichendaten in Umfang und Verwendung begrenzt sind. Hoffentlich werde ich Project: Merge in diesem Bereich in einer zukünftigen Version verbessern.
2
-1, Das OP fragte nach freier Software. Project Merge ist Trialware und wurde seit 3 ​​Jahren nicht mehr aktualisiert.
Yourbuddypal
3
Projekt: Merge wurde jetzt durch Oso XML Merge ersetzt: osocorporation.com/xmlmerge/index.php
leetNightshade
3

Ich verwende TortoiseMerge, das im TortoiseSVN- Programm enthalten ist

In diesem Thread haben wir über File Diff-Tools gesprochen, die jedoch nicht für XML bestimmt sind

/programming/1830962/file-differencing-software-on-windows

SIE
quelle
1
Dank S.Mark, wie ich gegenüber epotter erwähnt habe, verwende ich KDiff3 bereits für allgemeine Dateidifferenzen. Ich würde jedoch ein XML-spezifisches Diff-Dienstprogramm wirklich bevorzugen, wenn es verfügbar ist (wenn nicht, werde ich ein Open-Source-Dienstprogramm starten :)).
Russell
>> (if not, I will start up an open-source one :)Wow, wunderbar! Ich freue mich darauf, bitte hier irgendwo einen Link hinterlassen, wenn er startet.
SIE
3

Obwohl dies kein GUI-Tool ist, haben meine Schnelltests gezeigt, dass diffxml vielversprechend ist. Der Autor scheint über die Komplexität der standardisierten Darstellung von Unterschieden für verschachtelte Elemente nachgedacht zu haben (seine DUL - Delta Update Language-Spezifikation).

Bei der Installation und Ausführung seiner Tools kann ich sagen, dass die Rohtextausgabe ziemlich klar und präzise ist. Es bietet nicht das gleiche Maß an sofortiger Erfassung wie ein GUI-Tool, aber da die Ausgabe als DUL standardisiert ist, können Sie dies möglicherweise nutzen und ein Tool zum Generieren einer visuellen Darstellung erstellen. Ich würde auf jeden Fall gerne einen sehen.

Der Abschnitt "Links" des Autors verweist auf einige andere XML-Differenzierungswerkzeuge, aber wie Sie in Ihrem Beitrag erwähnt haben, sind alle proprietär.

Jarret Hardie
quelle
4
Meine Erfahrung ist folgende: Es kann überhaupt nicht mit der Neuordnung von Elementen umgehen, was in einem XML-Tool zu erwarten ist (als Option, da manchmal die Reihenfolge wichtig ist), und statt minimaler Unterschiede werden ganze geänderte Elemente angezeigt . Grundsätzlich ist die Diff-Datei nur eine ganz neue XML-Datei, wenn größere Formatierungsänderungen ohne große semantische Änderungen vorgenommen wurden.
SilverbackNet
3

Das Pretty Diff-Tool wurde unter Berücksichtigung von XML erstellt. Stellen Sie einfach sicher, dass Sie auf die Option für "Markup" klicken.

http://prettydiff.com/

austincheney
quelle
Aber das ist ein Online-Tool, oder? Wie kann ich Änderungen von links nach rechts anwenden oder zusammenführen?
dma_k
Sie müssen auch die Sortieroptionen ändern, andernfalls werden XML-Elemente als geändert gekennzeichnet, wenn sie nur verschoben wurden (die Reihenfolge spielt in XML keine Rolle, daher sollte dies nicht als Änderung angezeigt werden). Verschachtelte Abschnitte werden jedoch immer noch nicht nach ihrem Inhalt sortiert. Sie werden also weiterhin Hinzufügungen und Entfernungen großer XML-Blöcke sehen, wenn nur die Reihenfolge der Elemente geändert wurde. Daher ist es nicht möglich, einen feinkörnigen Unterschied zu erhalten.
Malvineous
2

A7Soft bietet XML-Vergleichstools für Freeware und Shareware:

http://www.a7soft.com

Andrew Lapick
quelle
0

Dies ist eine Diff-Engine für Java-Entwickler, die jedoch über eine Demo-Oberfläche verfügt. Sie können sie möglicherweise verwenden: https://community.emc.com/docs/DOC-5042

AP.
quelle
0

Ich empfehle Ihnen, das CodeCompare- Tool zu verwenden. Es unterstützt das native Hervorheben von XML-Daten und kann eine gute Lösung für Ihre Aufgabe sein.

JackD
quelle