Czy są dostępne bezpłatne narzędzia porównywania / scalania XML? [Zamknięte]


105

Mam kilka plików konfiguracyjnych w moich aplikacjach .net, w których chciałbym połączyć elementy ustawień aplikacji itp.

Już miałem zacząć robić to ręcznie, jak zwykle, jednak pomyślałem, że musi gdzieś być dostępne narzędzie GUI XML diff.

Narzędzie byłoby w stanie przejść do poziomu elementu, aby porównać i wyświetlić różnice itp.

Jednak Google nie podał żadnych konkretnych wyników bezpłatnych narzędzi ani żadnych wskazówek dotyczących niczego wartościowego.

Czy takie narzędzie jest dostępne? To jest bardzo przydatne? Za darmo?

Z góry dziękuję. :)

Edytować:

Oto trochę wyjaśnienia funkcji, która zmieniłaby moją podatną na błędy, żmudną ręczną pracę w 1-minutową prostszą czynność (i możliwość zautomatyzowania):

W KDiff3 możesz porównywać / scalać całe katalogi. Istnieje różnica hierarchiczna, która jest bardzo dokładna, przyjazna dla użytkownika i przejrzysta. Byłem zainteresowany znalezieniem podobnego rozwiązania, jednak zamiast hierarchii katalogów, hierarchia elementów XML.

Jeśli nie ma takiego oprogramowania typu open source, rozważam utworzenie takiego oprogramowania na CodePlex, aby zapewnić tę funkcjonalność.

Odpowiedzi:


11

KDiff3 nie jest specyficzny dla XML-a, ale jest darmowy. Wykonuje niezłą robotę porównywania i scalania plików tekstowych.


3
Zgadzam się, że w tej chwili używam KDiff3, jednak narzędzie przeznaczone specjalnie dla XML-a, które mogłoby zejść do poziomu elementu, byłoby wspaniałe.
Russell

2
Myślałem z tej perspektywy: tak jak KDiff robi hierarchiczną różnicę katalogów, może też działać hierarchiczna różnica elementów. Więc jeśli element się zmienił, zgadzam się, że elementy nadrzędne również powinny zostać oznaczone jako zmienione.
Russell

25
wszyscy zdają sobie sprawę, że w xml węzły potomne nie mają gwarancji, że będą w określonej kolejności, więc każde „narzędzie”, które zgłosiło, że coś nie było w tej samej kolejności z jednego pliku do drugiego, naprawdę nie będzie prawdziwym narzędziem zgodnym z XML

7
Jeśli kolejność się zmienia, elementy są inne. W zależności od semantyki danego dokumentu XML kolejność może być znacząca lub nie. Np. W XHTML oczywiście kolejność ma znaczenie.
George Lund

7
Chodzi o to, że zwykłe narzędzie porównywania działa w oparciu o linię. Istnieją specjalne narzędzia porównujące, np. Dla plików CSV, które rozumieją format, w jakim się różnią. Im lepsze to zrozumienie, tym skuteczniejsza może być różnica. Dobre narzędzie do porównywania XML byłoby w stanie przeanalizować XML, użyć schematu do określenia ograniczeń, takich jak na przykład czy kolejność ma znaczenie, a następnie użyć tej wiedzy, aby zapewnić znacznie bardziej efektywne wrażenia z porównywania / scalania.
Stijn de Witt,

32

Spójrz na Narzędzia do porównywania plików , z których używam WinMerge . Posiada możliwość porównywania dokumentów XML (możesz chcieć włączyć DisplayXMLFilesfiltr wstępny).

DisplayXMLFiles.dll - ta wtyczka ładnie drukuje pliki XML, wstawiając tabulatory i podziały wierszy. Jest to przydatne w przypadku plików XML, które nie mają zwrotów wierszy w dogodnych lokalizacjach.

WinMerge w akcji

Zobacz także moją tabelę porównawczą funkcji .


6
+1 Winmerge w wersji 2.12.4.0; Menu "Wtyczka" -> "Lista" -> zaznacz "Włącz wtyczki"; Menu "Wtyczka" -> zaznacz "Automatyczne rozpakowywanie". Testowano z plikiem XML z nazwą pliku z rozszerzeniem .xml i wydaje się, że działa.
Alessandro Jacopson,

10
Nie radzi sobie dobrze z atrybutami znajdującymi się w różnych rzędach, więc jego przydatność może być ograniczona w zależności od sytuacji.
Michael Kohne

Użyj tej transformacji najpierw na dowolnych plikach XML, aby posortować elementy i atrybuty: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid

1
Wygląda na to, że wtyczka nie jest już dostępna.
Fernando Gonzalez Sanchez

Nie jestem pewien, dlaczego nie ma go w instalatorze, ale udało mi się go pobrać z ich repozytorium src na bitbucket / kodzie źródłowym (sourceforge DL): bitbucket.org/winmerge/winmerge/src/ ...
aCodeMonkey

21

Napisałem i wydałem aplikację Windows, która specjalnie rozwiązuje problem porównywania i łączenia plików XML.

Projekt: Merge może wykonywać dwu- i trójkierunkowe porównania i scalanie dowolnego pliku XML (gdzie dwa z plików są uważane za niezależne wersje wspólnego pliku podstawowego). Możesz poinstruować go, aby identyfikował elementy w plikach wejściowych między innymi według wartości atrybutów lub zawartości elementów potomnych.

Jest w pełni kontrolowany za pomocą wiersza poleceń i może również generować raporty tekstowe zawierające różnice między plikami.

Projekt: Scal, scalając trzy pliki XML


Cześć @James Dzięki za informację. Oczywiście byłoby miło, gdyby było darmowe, ale zapewnia bardzo fajną funkcjonalność - a Twój przykład powyżej jest klasykiem, dlaczego to narzędzie jest tak pomocne! Dzięki za twój post. :)
Russell

Próbowałem Project :: Merge i niestety nie poradził sobie z moim zadaniem. Mam tekst HTML w ust ( <p>), która jest dodawana formatowania (np <i>, <em>). Więc Project :: Merge pokazuje, że kompletna para została zmieniona, nie wykonuje dogłębnej analizy słów.
dma_k

Tak, przykro mi to mówić, że obsługa XHTML (nigdy nie będzie obsługiwać starszego HTML) jest dość ograniczona pod tym względem, podobnie jak generalnie różnicowanie tekstu w blokach XML. Większość dotychczasowych prac koncentrowała się na plikach XML w stylu konfiguracji, w których dane znakowe w dowolnej postaci są ograniczone pod względem zakresu i wykorzystania. Mam nadzieję, że poprawię Project: Merge w tym obszarze w przyszłej wersji.

2
-1, OP zapytał o wolne oprogramowanie. Project Merge to wersja próbna, która również nie była aktualizowana od 3 lat.
yourbuddypal

3
Projekt: Merge został teraz zastąpiony przez Oso XML Merge: osocorporation.com/xmlmerge/index.php
leetNightshade


3

Używam TortoiseMerge, który jest zawarty w programie TortoiseSVN

W tym wątku rozmawialiśmy o narzędziach File Diff, ale nie poświęconych XML

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


1
Dzięki S.Mark, jak wspomniałem epotterowi, już używam KDiff3 do ogólnych różnic plików, jednak naprawdę wolałbym narzędzie różnicujące specyficzne dla XML, jeśli jest dostępne (jeśli nie, uruchomię narzędzie open source :))
Russell

>> (if not, I will start up an open-source one :)Wow, cudownie! będzie z niecierpliwością oczekiwać, upuść link gdzieś tutaj, jeśli się zacznie.
TY

3

Chociaż nie jest to narzędzie GUI, moje szybkie testy wykazały, że diffxml ma pewną obietnicę. Wydaje się, że autor pomyślał o złożoności reprezentowania różnic dla elementów zagnieżdżonych w ustandaryzowany sposób (jego specyfikacja DUL - Delta Update Language).

Instalując i uruchamiając jego narzędzia, mogę powiedzieć, że wynik w postaci surowego tekstu jest dość jasny i zwięzły. Nie oferuje takiego samego stopnia natychmiastowego zrozumienia jak narzędzie GUI, ale biorąc pod uwagę, że wynik jest ustandaryzowany jako DUL, być może byłbyś w stanie to wziąć i zbudować narzędzie do generowania reprezentacji wizualnej. Z pewnością chciałbym go zobaczyć.

Sekcja "linki" autora odnosi się do kilku innych narzędzi różnicujących XML, ale jak wspomniałeś w swoim poście, wszystkie są zastrzeżone.


4
Z mojego doświadczenia wynika, że: w ogóle nie radzi sobie z reorganizacją elementów, czego można by się spodziewać po narzędziu XML (jako opcja, ponieważ czasami ważna jest kolejność) i zamiast minimalnych różnic pokazuje całe zmienione elementy . Zasadniczo plik diff jest po prostu zupełnie nowym plikiem XML, jeśli nastąpią duże zmiany formatowania bez dużych zmian semantycznych.
SilverbackNet

3

Narzędzie Pretty Diff zostało stworzone z myślą o XML. Po prostu upewnij się, że kliknąłeś opcję „znaczników”.

http://prettydiff.com/


Ale to jest narzędzie online, prawda? Jak mogę zastosować zmiany od lewej do prawej lub scalić?
dma_k

Musisz także zmienić opcje sortowania, w przeciwnym razie oznacza elementy XML jako zmienione, gdy wszystko, co zrobiły, to przeniesienie (kolejność nie ma znaczenia w XML, więc nie powinno to pojawiać się jako zmiana). Nadal jednak nie sortuje zagnieżdżonych sekcji na podstawie ich zawartości, więc nadal będziesz widzieć dodawanie i usuwanie dużych bloków XML, gdy wszystko, co się wydarzyło, to zmiana kolejności elementów, więc nie jest możliwe uzyskanie drobnoziarnistego porównania.
Malvineous




0

Polecam skorzystać z narzędzia CodeCompare . Obsługuje natywne podświetlanie danych XML i może być dobrym rozwiązaniem dla twojego zadania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.