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

Контроль версий с помощью XML diff и слияния

Я ищу инструмент управления версиями с открытым исходным кодом, который может различать и объединять XML файлы.

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

Любая идея? Спасибо!

4b9b3361

Ответ 1

Что-то, что я использовал в прошлом, diffxml. Вы могли бы использовать это как свою команду diff для VCS, например svn или git.

Ответ 2

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

Посмотрите XMLUnit. Несмотря на то, что он нацелен на модульное тестирование, он представляет собой полный механизм разнесения XML. Вы должны сказать ему (в коде), как определить, что два узла подходят для сравнения, а затем что делать со всеми найденными потенциальными различиями (т.е. Они реальны или нет, в вашем приложении). Он обнаруживает исчерпывающий список "событий разницы", включая

  • Порядок атрибутов
  • Число атрибутов
  • Ребенок node
  • количество дочерних узлов
  • неявные vs значения явных атрибутов
  • Различия в комментариях
  • разновидности doctype
  • различия пространства имен

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

Ответ 3

Проект: Merge был разработан для решения этой конкретной проблемы: сравнение и объединение файлов XML через программное обеспечение SCM.

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

Ответ 4

Вы ищете инструмент diff, который является лишь подмножеством того, что такое VCS. Все VCS могут использовать внешнюю программу для различных файлов. Поскольку внешний инструмент diff может быть чем угодно, он может также быть написанным вами script, который предназначен для анализа и сравнения двух XML-документов.

Я не знаю, облегчит ли вам поиск того, что вы ищете, но это может быть.

Ответ 5

Он должен быть простым в одном инструменте для фиктивных/ленивых пользователей. API или консольные программы не подходят. Похоже, что он не существует в мире с открытым исходным кодом.

Clearcase может это сделать, но это дорого. Oxygen может сливаться, но он также не является бесплатным.

Ответ 6

Как указывали другие, вам просто нужен хороший инструмент diff, а не vcs.

К сожалению, я не слышал ни о каком графическом инструменте diff, поддерживающем xml. Поэтому я бы использовал обычный инструмент для сравнения, например (winmerge или k3diff), а затем я проверил бы xml, полученный в результате слияния, используя любой инструмент проверки xml, который вам нравится.