2010-08-05 8 views
10

Ich bin auf der Suche nach einem Open-Source-Versionskontroll-Tool, das XML-Dateien vergleichen und zusammenführen kann.Versionskontrolle mit XML-Vergleich und Zusammenführung

Die Schwierigkeit, ein solches Tool zu finden, ist, dass ich eine korrekte Zusammenführung einer XML-Datei benötige, die die Knoten und nicht die Zeilen vergleicht.

Irgendeine Idee? Danke!

+0

Wahrscheinliche Lösungen: [Free Xml Diff/Merge-Tools] (http://StackOverflow.com/Questions/1871076), [XML Diff und Merge] (http://StackOverflow.com/Questions/430001) –

Antwort

2

Etwas, das ich in der Vergangenheit verwendet habe, ist diffxml. Sie können dies möglicherweise als Ihren Befehl diff für ein VCS wie Svn oder Git verwenden.

6

Leider gibt es keine universelle Lösung für dieses Problem. XML Diffing reagiert sehr empfindlich auf das, was Sie als anders betrachten. In einem Fall könnte die Reihenfolge der Kindknoten wichtig sein, und in einem anderen Fall (vielleicht sogar in der gleichen Datei) könnte es irrelevant sein.

Werfen Sie einen Blick auf XMLUnit. Obwohl es sich um Unit-Testing handelt, ist es eine vollständige XML-Differenzierungs-Engine. Sie müssen es (im Code) sagen, wie man bestimmt, dass zwei Knoten für einen Vergleich infrage kommen, und dann, was mit allen gefundenen möglichen Unterschieden zu tun ist (d. H. Ob sie real sind oder nicht, in Ihrer Anwendung). Er erkennt eine erschöpfende Liste von "difference Ereignisse" mit

  • Attribut Reihenfolge
  • Anzahl der Attribute
  • Child-Knoten, um
  • Anzahl der untergeordneten Knoten
  • implizite vs explizite Attributwerte
  • Kommentar Unterschiede
  • doctype Unterschiede
  • Namespac e Unterschiede

Und eine ganze Reihe mehr. Jeder dieser Punkte kann für Ihre Bewerbung wichtig oder unwichtig sein, und nur Sie können entscheiden. Es ist einen Blick wert, aber es wird etwas Arbeit brauchen, um zu bekommen, was Sie wollen.

1

Sie suchen nach einem Diff-Tool, das nur eine Teilmenge dessen ist, was ein VCS ist. Alle VCS können ein externes Programm zum Diffzieren von Dateien verwenden. Da das externe Diff-Tool alles sein kann, könnte es sich auch um ein von Ihnen geschriebenes Skript handeln, das auf das Analysieren und Vergleichen von zwei XML-Dokumenten zugeschnitten ist.

Ich weiß nicht, ob dies es für Sie einfacher zu finden, was Sie suchen, aber es könnte.

-2

Wie andere darauf hingewiesen haben, brauchen Sie nur ein gutes Diff-Tool, nicht die VCS.

Leider habe ich noch nie von einem grafischen Diff-Tool gehört, das xml unterstützt. Also würde ich ein normales Diff-Tool wie (winmerge oder k3diff) verwenden und dann würde ich das xml, das aus der Zusammenführung resultiert, mit einem beliebigen XML-Validierungstool validieren.

-1

Es sollte ein einfaches All-in-One-Tool für Dummy/faule Benutzer sein. APIs oder Konsolenprogramme passen nicht. Es sieht wirklich so aus, dass es in der Open-Source-Welt nicht existiert.

Clearcase kann es tun, aber es ist zu teuer. Oxygen kann verschmelzen, aber es ist auch nicht kostenlos.

+1

sollten Sie Verwandle das wahrscheinlich in einen Frage-Update-Abschnitt. Dies ist keine Antwort. – firegurafiku

+0

Konsolenprogramm ist perfekt, solange es nur einen Befehl benötigt – Mike76

2

Project: Merge wurde entwickelt, um genau dieses Problem zu lösen: Vergleichen und Zusammenführen von XML-Dateien über SCM-Software.

Ich fürchte, es ist auch nicht kostenlos, aber es ist deutlich billiger als andere Tools, die behaupten, in der Lage zu sein, XML zu vergleichen und zu verschmelzen.

Verwandte Themen