Подтвердить что ты не робот

Инструмент или библиотека для сравнения файлов xml

Я ищу инструмент сравнения XML, который понимает xml. Это не может быть сравнение строк за строкой, такое как WinMerge или Beyond Compare.

Идеальное решение будет таким, которое показывает изменения, аналогичные тому, как Word 2007 показывает изменения треков. DeltaXML делает это, но не поставляется с реальным графическим интерфейсом "из коробки" и составляет 500 долларов США на пользователя!:

http://i41.tinypic.com/os8k5k.jpg

ExamXml работает из коробки, но отображает различия в запутанной манере. Он не имеет понятия до и после, он просто показывает различия:

alt text http://www.a7soft.com/images/examxml1_.gif

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


UPDATE:

Пока ExamlXML - лучшее из готового решения. Но ему не хватает концепций управления изменениями DeltaXML. В результате некоторые проблемы с удобством использования.

DeltaXML - это в значительной степени решение, в котором я нуждаюсь, но что-то с большей функциональностью из коробки будь лучше. DeltaXML требует написания java-кода для вызова api вместе с написанием XSL для преобразования xml в ожидаемый ввод.

4b9b3361

Ответ 1

Если я понимаю вашу проблему, у вас, вероятно, есть приложение, которое использует XML файлы в качестве хранилища данных, а GUI абстрагирует "технические" имена тегов на "удобные для пользователя" метки - опять же, я предполагаю. Таким образом, было бы естественным продолжением, чтобы рассматривать различия аналогичным образом. Я также предполагаю, что ваше приложение не имеет возможности diff, которая следует концепции абстракции.

Я сделал несколько поисков и нашел одно приложение (ExamXML), который, похоже, близок к выделенным функциям. Я загрузил версию eval и протестировал ваши файлы:

http://www.programmedintheusa.com/images/stack547399.png

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

Я хочу отметить, что вам будет трудно найти инструмент сравнения XML, который не будет показывать имена тегов, поскольку теги являются тем, что дает контекст содержимого. Если вы убираете контекст, становится трудно понять отображаемые данные. Во всяком случае, может быть, этот инструмент может быть полезен. Вы также пытались показать своим пользователям некоторые из этих инструментов и посмотреть, что они готовы терпеть, иногда они могут вас удивить. Надеюсь, это поможет!

Ответ 2

Я очень удивлен, что никто не упоминал Microsoft XML NotePad

Это бесплатно, и он может создать довольно хорошее сравнение, рассказывая, какие элементы/атрибуты были изменены, перемещены, удалены и т.д.:

(Извините, если скриншоты немного шире).

XML%20Notepad.jpg

XML%20Notepad_compare.jpg

Вы также можете применять XLS к XML файлу и выполнять различные операции редактирования. Ну стоит попробовать.

Ответ 4

Я могу попробовать DeltaXML + преобразование XSLT, чтобы получить конкретный результат, который вы хотите. Одна из проблем с использованием инструментов сравнения текста с XML заключается в том, что физическая форма XML-документа (его отступы и т.д.) Может меняться, даже если сам контент отсутствует, что может привести к множеству ложных срабатываний. DeltaXML - очень хороший инструмент для сравнения XML на основе документов.

Кроме того, в зависимости от того, какой редактор использует ваш пользователь, он может иметь встроенное XML-различие. Например, редактор Arbortext имеет хороший инструмент, который отображает текст (а не теги) с изменениями, выделенными/пробитыми.

Ответ 5

Altova diffDog XML Spy и diffDog - исключительные инструменты. Поднимите их из моих холодных мертвых рук, что-то вроде этого.

Ответ 6

Beyond Compare отлично, как уже упоминал @BobbyShaftoe. Однако для слияния мне нравится использовать Araxis Merge. Мы используем его для подобных целей довольно часто.

В отношении вашего комментария о нетехнической способности ваших пользователей:

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

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

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

Ответ 7

Попробуйте XML-блокнот от Microsoft MSDN XML, он имеет файлы сравнения XML. Не знаю, насколько это хорошо.

Ответ 8

Вы пробовали examdiff? Конечно, это все еще технический инструмент, но с ним легко работать. Он имеет интерфейс перетаскивания для сравнения файлов.

Ответ 9

Вы можете найти Инструмент XML Diff и Patch GUI (пример кода на MSDN) лучше всего соответствует вашим потребностям: он по-прежнему показывает теги, но подчеркивает разницу в тексте. Поскольку вы получаете код, для немного большего усилия вы могли бы адаптировать его более точно к вашим требованиям.

Несмотря на то, что образец является относительно пожилым (июль 2004 года и имеет свои корни в 2002 году), он безболезненно обновляется до Visual Studio Express С# 2008. Не откладывайте при загрузке образца с сайта MSDN, если/когда установщик MSI упоминает "SQLXML Bulkload в .NET Code Sample", - это не!

Ответ 10

Либо программно, либо пользовательский интерфейс, вы можете использовать XmlDiff, XmlPatch инструменты и библиотеку из MSDN Подробнее о том, как это работает, см. Руководство.

http://msdn.microsoft.com/en-us/library/aa302294.aspx

Ответ 11

Oxygen В редакторе XML есть лучший инструмент XML diff, который я нашел. Для сравнения существует несколько различных алгоритмов, поэтому, если по умолчанию не работает для вас, попробуйте Syntax Aware или некоторые другие алгоритмы (теперь я использую версию 8 и не обновляюсь до версии 10, поэтому ymmv, но я сомневаюсь что различие XML ухудшилось).

Ответ 12

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

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

Ответ 13

Я всегда использую kdiff3. Он прост в использовании и может сравнивать до 3 файлов. http://kdiff3.sourceforge.net/