Чи доступні безкоштовні інструменти для розлиття / злиття Xml? [зачинено]


105

У моїх програмах .net є декілька конфігураційних файлів, які я хотів би об'єднати елементи налаштувань програми тощо.

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

Інструмент міг би перейти на рівень елемента для порівняння та відображення відмінностей тощо.

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

Чи доступний такий інструмент? Це дуже корисно? Безкоштовно?

Заздалегідь спасибі. :)

Редагувати:

Ось трохи роз'яснення функціональності, що перетворить мою втомлювану роботу, схильну до помилок, на 1 хвилину простішою задачею (та потенційною для автоматизації):

У KDiff3 ви можете виконати розходження / об'єднання цілих каталогів. Існує ієрархічна різниця, яка дуже точна, зручна та зрозуміла. Мені було цікаво знайти подібне рішення, однак замість ієрархії каталогів - ієрархія елементів XML.

Якщо такого програмного забезпечення з відкритим кодом немає, я розглядаю можливість створити його на CodePlex, щоб забезпечити цю функціональність.

Відповіді:


11

KDiff3 не є специфічним для XML, але він безкоштовний. Це гарна робота порівняння та об'єднання текстових файлів.


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

2
Я думав з цієї точки зору: те, як KDiff робить ієрархічну різницю каталогів, може також працювати ієрархічна різниця елементів. Отже, якщо елемент змінився, я згоден, батьківські елементи також повинні бути позначені як такі, що змінилися.
Рассел

25
всі розуміють, що в xml дочірні вузли не гарантуються в будь-якому конкретному порядку, тому будь-який "інструмент", який повідомив, що щось не в тому ж порядку від одного файлу до іншого, справді не буде справжнім сумісним інструментом xml

7
Якщо порядок змінюється, то елементи відрізняються. Залежно від семантики розглянутого документа XML, порядок може бути, а може і не бути значним. Наприклад, у XHTML очевидно, що порядок має значення.
Джордж Лунд

7
Справа в тому, що звичайний інструмент "diff" працює на основі рядка. Існують спеціальні інструменти різного типу, наприклад, CSV-файли, які розуміють формат, в якому він відрізняється. Чим краще це розуміння, тим ефективніше може статися відмінне. Хороший інструмент різниці XML міг би розібрати XML, використовувати схему для визначення обмежень, таких як, наприклад, питання порядку, а потім використовувати ці знання, щоб дати набагато ефективніший досвід роз'єднання / злиття.
Штійн де Вітт

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
Ларрі Девід

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

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

21

Я написав та випустив додаток Windows, яке спеціально вирішує проблему порівняння та об’єднання файлів XML.

Проект: Злиття може виконувати дво- і тристоронні порівняння та злиття будь-якого XML-файлу (де два файли вважаються незалежними версіями загального базового файлу). Ви можете доручити йому визначати елементи у вхідних файлах за значеннями атрибутів або за вмістом дочірніх елементів, серед іншого.

Це повністю керується за допомогою командного рядка, а також може створювати текстові звіти, що містять відмінності між файлами.

Проект: Об’єднання об'єднання трьох XML-файлів


Привіт @James Дякую за інформацію. Очевидно, було б добре, якби він був безкоштовним, але він дає дуже цікавий функціонал - і ваш приклад вище - це класичний приклад того, чому цей інструмент так корисний! Дякуємо за ваш пост :)
Рассел

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

Так, вибачте, що можу сказати, що підтримка XHTML (вона ніколи не зробить застарілий HTML) у цьому відношенні досить обмежена, як і диференціація тексту в блоках XML взагалі. Більшість робіт до цих пір були зосереджені на XML-файлах у стилі конфігурації, де дані символів вільної форми обмежені за своїм обсягом та використанням. Сподіваюся, я вдосконалюю Проект: Об’єднайтесь у цій галузі в майбутньому випуску.

2
-1, ОП запитала про вільне програмне забезпечення. Проект Злиття є пробним, а також не оновлювався протягом 3 років.
yourbuddypal

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

15

Тут перелічено кілька інструментів для розробки та злиття XML на основі Java:

XML Diff з відкритим кодом, написаний на Java

Додані посилання:


2
У мене виникають проблеми з пошуку будь-яких посилань на програмне забезпечення у згаданому вами посиланні.
Рассел

Та мені теж! Можливо, потрібно трохи
погукати

3

Я використовую TortoiseMerge, який входить до програми TortoiseSVN

І ми говорили про інструменти файлів Diff у цій темі, але не присвячені XML

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


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

>> (if not, I will start up an open-source one :)Вау, чудово! буде з нетерпінням чекати цього, будь ласка, відпустіть посилання десь тут, якщо воно почнеться.
ВИ

3

Хоча це не інструмент GUI, мої швидкі тести показали, що diffxml має певну обіцянку. Здається, автор подумав про складності подання розрізків для вкладених елементів стандартизованим способом (його специфікація мови оновлення DUL - Delta Update).

Встановлюючи та запускаючи його інструменти, можу сказати, що вихід сирого тексту є досить чітким і стислим. Він не пропонує той же ступінь негайного усвідомлення, як інструмент GUI, але враховуючи, що вихід стандартизований як DUL, можливо, ви зможете взяти це і створити інструмент для створення візуального зображення. Я, безумовно, хотів би його побачити.

У розділі "посилання" автора є посилання на кілька інших інструментів розрізнення XML, але, як ви вже згадували у своїй публікації, усі вони є власником.


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

3

Інструмент Pretty Diff був створений з урахуванням XML. Просто переконайтесь, що ви натискаєте опцію для "розмітки".

http://prettydiff.com/


Але це онлайн-інструмент, правда? Як я можу застосувати зміни зліва направо або об'єднати?
dma_k

Вам також потрібно змінити параметри сортування, інакше він позначає XML-елементи як змінені, коли все, що вони робили, було переміщено (порядок не має значення в XML, тому це не повинно відображатися як зміна). Він все ще не сортує вкладені розділи залежно від їх вмісту, тому ви все одно побачите доповнення та видалення великих блоків XML, коли все, що трапилось, змінило порядок елементів, тому отримати дрібнозернисту різницю неможливо.
Зловісний




0

Я рекомендую вам скористатися інструментом CodeCompare . Він підтримує нативне підсвічування XML-даних, і це може бути хорошим рішенням для вашої задачі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.