Доступны ли бесплатные инструменты Xml Diff / Merge? [закрыто]


105

У меня есть несколько файлов конфигурации в моих .net-приложениях, которые я хотел бы объединить, элементы настроек приложения и т. Д.

Я собирался начать делать это вручную, как обычно, но подумал, что где-то должен быть доступен графический интерфейс XML diff.

Инструмент сможет перейти на уровень элемента, чтобы сравнить и отобразить различия и т. Д.

Однако Google не дал никаких существенных результатов бесплатного использования инструментов и никаких намеков на что-либо ценное.

Доступен ли такой инструмент? Это очень полезно? Бесплатно?

Заранее спасибо. :)

Редактировать:

Вот небольшое пояснение функций, которые превратят мою подверженную ошибкам, утомительную ручную работу в 1-минутную более простую задачу (и возможность автоматизации):

В KDiff3 вы можете выполнять сравнение / слияние целых каталогов. Существует иерархическая дифференциация, которая очень точна, удобна и понятна. Мне было интересно найти аналогичное решение, но вместо иерархии каталогов - иерархия элементов XML.

Если такого программного обеспечения с открытым исходным кодом нет, я рассматриваю возможность его создания на CodePlex для обеспечения этой функциональности.

Ответы:


11

KDiff3 не зависит от XML, но он бесплатный. Он отлично справляется со сравнением и объединением текстовых файлов.


3
Я согласен, что сейчас я использую KDiff3, однако инструмент, специально предназначенный для XML, который мог бы перейти на уровень элементов, был бы потрясающим.
Рассел

2
Я думал с этой точки зрения: как KDiff выполняет иерархическое различие каталогов, иерархическое различие элементов также может работать. Итак, если элемент изменился, я согласен, родительские элементы также должны быть помечены как измененные.
Рассел

25
все понимают, что в xml дочерние узлы не обязательно находятся в каком-либо определенном порядке, поэтому любой «инструмент», который сообщает, что что-то было не в том же порядке от одного файла к другому, действительно не будет настоящим инструментом, совместимым с xml

7
Если порядок меняется, значит, элементы другие. В зависимости от семантики рассматриваемого XML-документа порядок может иметь, а может и не иметь значения. Например, в XHTML порядок имеет значение.
Джордж Лунд

7
Дело в том, что обычный инструмент diff работает по линиям. Существуют специальные инструменты сравнения, например, для файлов CSV, которые понимают формат, который они различают. Чем лучше это понимание, тем эффективнее может произойти различие. Хороший инструмент сравнения XML сможет анализировать XML, использовать схему для определения ограничений, таких как, например, имеет ли значение порядок, а затем использовать эти знания, чтобы дать гораздо более эффективный опыт сравнения / слияния.
Stijn de Witt

32

Взгляните на инструменты сравнения файлов , из которых я использую WinMerge . У него есть возможность сравнивать XML-документы (вы можете включить DisplayXMLFilesпредварительный фильтр).

DisplayXMLFiles.dll - этот плагин красиво печатает файлы XML, вставляя табуляции и разрывы строк. Это полезно для файлов XML, у которых нет возврата строки в удобных местах.

WinMerge в действии

См. Также мою сравнительную таблицу функций .


6
+1 Winmerge версии 2.12.4.0; Меню «Плагин» -> «Список» -> установите флажок «Включить плагины»; Меню «Плагин» -> отметьте «Автоматическая распаковка». Протестировано с помощью файла XML с именем файла с расширением .xml, и, похоже, он работает.
Алессандро Якопсон,

10
Он плохо справляется с атрибутами, расположенными в разном порядке, поэтому его полезность может быть ограничена в зависимости от вашей ситуации.
Майкл Кон

Сначала используйте это преобразование в любых файлах XML для сортировки элементов и атрибутов: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid 08

1
Похоже, плагин больше не доступен.
Фернандо Гонсалес Санчес

Я не уверен, почему его нет в установщике, но мне удалось получить его из их репозитория src на bitbucket / исходном коде (sourceforge DL): bitbucket.org/winmerge/winmerge/src/…
aCodeMonkey

21

Я написал и выпустил приложение для Windows, которое специально решает проблему сравнения и объединения XML-файлов.

Project: Merge может выполнять двух- и трехстороннее сравнение и слияние любого XML-файла (где два файла считаются независимыми версиями общего базового файла). Вы можете указать ему идентифицировать элементы во входных файлах по значениям атрибутов или содержимому дочерних элементов, среди прочего.

Он полностью управляется через командную строку, а также может создавать текстовые отчеты, содержащие различия между файлами.

Проект: объединение трех XML-файлов


Привет @James Спасибо за информацию. Очевидно, было бы неплохо, если бы он был бесплатным, но он действительно предоставляет очень интересные функции - и приведенный выше пример является классическим объяснением того, почему этот инструмент так полезен! Спасибо за ваш пост. :)
Рассел

Я попробовал Project :: Merge, но, к сожалению, он не справился с моей задачей. У меня есть HTML-текст в paras ( <p>), к которому добавлено форматирование (например <i>, <em>). Таким образом, Project :: Merge показывает, что параграф был изменен полностью, а не глубокий анализ слов.
dma_k

Да, с сожалением вынужден сказать, что поддержка XHTML (он никогда не будет использовать устаревший HTML) в этом отношении довольно ограничена, как и различие текста в блоках XML в целом. Большая часть работы до сих пор была сосредоточена на XML-файлах в стиле конфигурации, в которых символьные данные произвольной формы ограничены по объему и использованию. Надеюсь, я улучшу Project: Merge в этой области в следующем выпуске.

2
-1, ОП спросил о свободном ПО. Project Merge - это пробная версия, которая тоже не обновлялась 3 года.
yourbuddypal

3
Проект: Merge теперь заменен на Oso XML Merge: osocorporation.com/xmlmerge/index.php
leetNightshade

15

Здесь перечислены несколько инструментов для сравнения и слияния XML на основе Java:

Открытый исходный код XML Diff, написанный на Java

Добавлены ссылки:


2
Мне не удается найти какие-либо ссылки на программное обеспечение в указанной вами ссылке.
Рассел

Да, я тоже! Возможно, нужно немного
погуглить

3

Я использую TortoiseMerge, который включен в программу TortoiseSVN

И мы говорили об инструментах File Diff в этой ветке, но не посвященной XML.

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


1
Спасибо S.Mark, как я уже сказал epotter, я уже использую KDiff3 для общих файловых различий, однако я бы действительно предпочел специальную XML-утилиту diff, если она доступна (если нет, я запущу программу с открытым исходным кодом :))
Рассел

>> (if not, I will start up an open-source one :)Ух ты, замечательно! будет с нетерпением ждать этого, пожалуйста, оставьте ссылку где-нибудь здесь, если она начнется.
ВЫ

3

Хотя это не инструмент с графическим интерфейсом, мои быстрые тесты показали, что у diffxml есть определенные перспективы. Похоже, что автор задумался о сложностях представления различий для вложенных элементов стандартизированным способом (его спецификация DUL - Delta Update Language).

Установив и запустив его инструменты, я могу сказать, что исходный текстовый вывод довольно четкий и лаконичный. Он не предлагает такой же степени немедленного восприятия, как инструмент с графическим интерфейсом, но, учитывая, что вывод стандартизирован как DUL, возможно, вы сможете воспользоваться этим и создать инструмент для генерации визуального представления. Я определенно хотел бы его увидеть.

В разделе «Ссылки» автора есть ссылки на несколько других инструментов различения XML, но, как вы упомянули в своем сообщении, все они проприетарные.


4
Мой опыт таков: он вообще не может обрабатывать переупорядочение элементов, чего можно было бы ожидать от инструмента XML (как вариант, потому что иногда важен порядок), и вместо минимальных различий он показывает целые измененные элементы . По сути, файл diff - это просто совершенно новый XML-файл, если есть серьезные изменения форматирования без больших семантических изменений.
SilverbackNet

3

Инструмент Pretty Diff был создан с учетом XML. Просто убедитесь, что вы выбрали опцию «разметка».

http://prettydiff.com/


Но это же онлайн-инструмент, верно? Как применить изменения слева направо или объединить?
dma_k

Вам также необходимо изменить параметры сортировки, иначе он помечает элементы XML как измененные, когда все, что они сделали, было перемещено (порядок не имеет значения в XML, поэтому это не должно отображаться как изменение). Тем не менее, он по-прежнему не сортирует вложенные разделы на основе их содержимого, поэтому вы по-прежнему будете видеть добавления и удаления больших блоков XML, когда все, что произошло, - это изменение порядка элементов, поэтому невозможно получить детальное различие.
Malvineous




0

Я рекомендую вам использовать инструмент CodeCompare . Он поддерживает встроенную подсветку XML-данных и может быть хорошим решением вашей задачи.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.