Сравнить два XML-файла

Обновлено: 04.07.2024

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

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

При сравнении XML файлы сравниваются с использованием алгоритма «Чавате», как описано в этом документе:

Обнаружение изменений в иерархически структурированном Информация , Сударшан Чавате, Ананд Раджараман и Дженнифер Видом; Конференция SIGMOD, Монреаль, Канада, июнь 1996 г., стр. 493–504.

Отчеты сравнения XML отображаются в инструменте сравнения. Дополнительные сведения об инструменте сравнения см. в разделах «Сравнение файлов и папок» и «Объединение файлов».

Отчет о сравнении XML показывает иерархическое представление частей двух файлов XML, которые различаются. В отчете не отображаются идентичные разделы файлов.

Если файлы идентичны, вы увидите сообщение об отсутствии различий.

Примечание

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

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

Выберите XML-файлы для сравнения

Из браузера текущей папки

Чтобы сравнить два файла из браузера текущей папки:

Для двух файлов в одной папке выберите файлы, щелкните правой кнопкой мыши и выберите "Сравнить выбранные файлы/папки".

Чтобы сравнить файлы в разных папках:

Выберите файл, щелкните правой кнопкой мыши и выберите «Сравнить с»

Выберите второй файл для сравнения в диалоговом окне "Выбор файлов или папок для сравнения".

Выберите тип сравнения Сравнение текста XML .

Нажмите «Сравнить».

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

Дополнительную информацию о сравнении файлов других типов с помощью инструмента сравнения, например текстовых, MAT или двоичных, см. в разделах «Сравнение файлов и папок» и «Объединение файлов».

Сравнить с помощью инструмента сравнения

Чтобы сравнить файлы с помощью Инструмента сравнения, на панели инструментов MATLAB® в разделе «Файл» нажмите кнопку «Сравнить». В диалоговом окне выберите файлы для сравнения.

Если файлы, которые вы выбрали для сравнения, являются файлами XML и вы выбрали сравнение текста XML , инструмент сравнения XML выполнит анализ XML-файлов методом Chawathe и создаст отчет.

Сравнить из командной строки

Чтобы сравнить файлы XML из командной строки, введите

где имя_файла1 и имя_файла1 — файлы XML.

Изменить тип сравнения

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

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

Навигация по отчету о сравнении XML

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

Чтобы перебрать различия , используйте вкладку "Сравнение" на панели инструментов. Чтобы перейти к следующей или предыдущей группе отличий, на вкладке "Сравнение" в разделе "Навигация" нажмите кнопки со стрелками, чтобы перейти к предыдущему или следующему отличию.

Вы также можете нажать, чтобы выбрать элементы в иерархическом дереве.

Выбранные элементы отображаются в рамке.

Если выбранный элемент является частью совпадающей пары, он выделяется в поле как в левом, так и в правом дереве.

Выделение элемента отчета указывает на характер каждого различия следующим образом:

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

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

Невыделенные строки указывают на элемент-контейнер, который содержит другие измененные или несопоставленные элементы.

Используйте вкладку "Сравнение" для следующих функций:

Обновить — снова запустите анализ Chawathe, чтобы обновить сравнительный отчет.

Поменять местами — поменять местами стороны и повторить сравнение. Снова запускает анализ Chawathe.

Сохранить как > HTML — открывает диалоговое окно «Сохранить», в котором можно сохранить версию отчета о сравнении XML для печати. Отчет представляет собой неинтерактивный HTML-документ о различиях, обнаруженных алгоритмом Чавате, для печати или архивирования записи сравнения.

Сохранить как > Переменная рабочей области — экспорт результатов сравнения XML в рабочую область.

В разделе «Навигация» нажимайте кнопки со стрелками (или клавиши «Вверх» и «Вниз»), чтобы перейти к предыдущему различию или перейти к следующему различию.

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

Используйте элементы управления вкладки "Вид" на панели инструментов для следующих функций:

Развернуть все — разворачивает каждый элемент в дереве.

Совет

Щелкните правой кнопкой мыши, чтобы развернуть или свернуть иерархию в выбранном узле дерева.

Свернуть все — сворачивает все элементы в дереве до максимально компактного вида.

Примечание

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

Сохранение файлов журналов сравнения в ZIP-файле

Временные файлы сравнения XML накапливаются в tempdir /MatlabComparisons/XMLComparisons/TempDirs/ . Эти временные файлы удаляются, когда вы закрываете соответствующий отчет о сравнении.

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

Папка назначения должна существовать. Вывод сообщает имя zip-файла:

Чтобы просмотреть файл журнала для последнего сравнения в редакторе MATLAB, введите:

Экспорт результатов в рабочую область

Чтобы экспортировать результаты сравнения XML в базовое рабочее пространство MATLAB,

На вкладке "Сравнение" в разделе "Сравнение" выберите "Сохранить как" > "Переменная рабочей области".

Библиотеку XMLUnit можно использовать для сравнения двух файлов XML в Java. Подобно JUnit, XMLUnit также можно использовать для проверки XML-файлов для сравнения путем расширения класса XMLTestcase. Это богатая библиотека, которая обеспечивает подробное сравнение XML-файлов. Кстати, сравнение XML полностью отличается от сравнения String в Java или сравнения объектов с использованием equals() , поскольку два XML, которые содержат разные комментарии и пробелы, могут быть равными, что неверно для сравнения строк или символов. Кроме того, при сравнении XML-файлов очень важно точно знать, какое содержимое или часть отличается, и XMLUnit не только показывает отличающееся содержимое, но и XPath сравниваемых элементов.

Сердцем и душой XMLUnit является класс DifferenceEngine, но мы не будем использовать его напрямую. Вместо этого вы будете использовать Diff и DetailedDiff — два важных класса для сравнения XML. Они предоставляют механизм сравнения для сравнения XML. Библиотека XMLUnit не только сравнивает полные XML-документы, но также может выполнять множество полезных действий, связанных с XPath, например. он может проверить, существует ли XPATH или нет. Он даже может проверить, содержит ли XPath ожидаемое значение или нет.

Программа Java для сравнения двух документов XML в Java.

Внутреннее использование JAXP для преобразования XSLT и оценки XPath. По крайней мере, требуется JAXP 1.2, который включен в Java 1.5, но если вы хотите использовать более продвинутый движок XPath, основанный на JAXP 1.3, вам необходимо включить Java 1.5 или более позднюю версию в путь к классам. В этом руководстве по Java и XML вы узнаете, как сравнить два XML-документа в Java, следуя простому примеру с использованием XMLUnit. В целом, это хорошая и удобная служебная библиотека для тестирования и сравнения XML-файлов в приложениях Java.

Вот полная программа на Java для сравнения двух XML-документов с использованием библиотеки XMLUnit. В этом примере у нас есть два XML-файла: source.xml и target. xml позже создается путем копирования предыдущего файла, и я сделал одно изменение в номере телефона, чтобы сравнить эти два XML-файла. Для сравнения и отображения различий между XML-документами я создал два статических метода compareXML() и printDifferences() .

Код для чтения XML-файла очень похож на код чтения текстовых файлов в Java, мы читаем XML-файлы как InputStream и передаем его в compareXML() как объект Reader. Настоящее сравнение XML начинается в этом методе с классов Diff и DetailedDiff.

DetailedDiff возвращает все различия в виде списка, если нет различий, то размер этого списка будет равен нулю, и мы можем сказать, что два XML-файла идентичны по данным. Метод printDifference() берет этот список различий и печатает его на консоли.Если вы посмотрите на разницу, предоставленную XMLUnit, вы обнаружите, что она показывает, в чем разница, и где эта разница возникает, показывая полный XPATH.

Программа Java для сравнения файлов XML с использованием XMLUnit

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

Как для сравнения двух файлов XML в Java с помощью XMLUnit

Входные XML-файлы:

Кроме того, вы также можете сравнить XML-файлы как текстовые файлы с помощью инструмента сравнения, такого как Beyond Compare или WinMerge, как упоминалось в моем предыдущем посте о 10 основных инструментах для программистов Java.

Как тестировать файлы XML с помощью XMLUnit

XMLUnit, пример 2:

Теперь давайте удалим все символы новой строки из target.xml и преобразуем его в однострочный файл XML для сравнения. Теперь наш target.xml будет выглядеть как

Все эти различия при сравнении исходных и целевых XML-файлов возникают из-за пробелов и не являются истинными различиями.

Поскольку в реальном сценарии всегда можно сравнить два XML-файла с разницей в пробелах, лучше игнорировать пробелы при сравнении XML-файлов, и, к счастью, XMLUnit можно настроить на игнорирование пробелов с помощью статического метода XMLUnit. setIgnoreWhitespace(true) .

Теперь, если вы повторно запустите эту Java-программу после добавления вызова XMLUnit.setIgnoreWhitespace(true) с теми же входными данными, вы снова увидите единственное отличие, как показано ниже.


Это все о том, как сравнить два файла XML в Java, используя пример XMLUnit. Библиотека XMLUnit богата и мощна и предоставляет несколько других возможностей для сравнения XML-документов, включая различия в XPath, сравнение преобразований и т. д.

Библиотека XMLUnit также может использоваться как JUnit путем расширения класса XMLTestCase, который предоставляет такие методы, как assertXMLEqual(org.w3c.dom.Document source, org.w3c.dom.Document target ) и несколько других перегруженных версий для тестирования файлов XML. Вы можете проверить, существует ли XPath или нет, и содержит ли он ожидаемое значение или нет. Это очень хороший инструмент для написания автоматических тестов, если ваша программа создает или изменяет XML-файлы.

  • В чем разница между парсерами DOM и SAX в Java? (ответ)
  • Как форматировать даты при преобразовании XML в Java с помощью JAXB? (пример)
  • Пошаговое руководство по синтаксическому анализу XML с помощью синтаксического анализатора SAX в Java? (учебник)
  • Как читать XML-файлы с помощью DOM Parser в Java? (учебник)
  • Как экранировать специальный символ XML в строке Java? (учебник)
  • Как анализировать XML-документы с помощью JDOM Parser в Java? (учебник)
  • Как создавать и оценивать выражения XPath в Java? (руководство)
  • 10 самых популярных вопросов на собеседовании по преобразованию XSLT? (Часто задаваемые вопросы)
  • 10 самых популярных вопросов на собеседовании по XML для Java-программистов? (Часто задаваемые вопросы)

19 комментариев:

Привет, как показано в выводе, могу ли я удалить дополнительные данные, которые присутствуют, как будто мне просто нужны различия, а не предложения, которые после AT, в основном я хочу игнорировать узлы, есть ли выход для того же

Ожидаемое текстовое значение «8034832190», но было «9843267462» — сравнение 8034832190
в /employees[1]/employee[1]/phone[1]/text()[1] с 9843267462 в /employees[ 1]/сотрудник[1]/телефон[1]/текст()[1]

Привет, спасибо за сообщение, отличное объяснение.
Я пытаюсь это реализовать.
Однако я получаю сообщение об ошибке в методе printDifferences(Список различий) в цикле for
for(Difference разница : разница) System.out.println(разница);
>
Несоответствие типов: невозможно преобразовать тип элемента Object в Difference

Есть ли какое-нибудь решение?

@Priya Pawar : используйте список как универсальный, чтобы исправить проблему с типом объекта элемента.
везде, где определен список, преобразуйте список типа Difference.
"Список"

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

Здравствуйте, @Unknown, я не уверен, нужно проверить. Вы также можете взглянуть на API или код XMLUnit.

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

Надо проверить, приятель, ты проверил API? у них наверняка что-то есть.

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

Здравствуйте, @Unknown, может быть, проверьте API, есть ли у них какие-либо такие методы, я давно их не проверял, но это должно быть легко, если вы добавите это в свой путь к классам и позволите Eclipse или IntelliJ рассказать вам все методы.

Я хочу сравнить Oly атрибуты, это возможно

у меня эта строка подчеркнута красным
for(Разница разница: разница)

Привет, я пытаюсь использовать это, но получаю NoClassDefFoundError: org/custommonkey/xmunit/Diff, я проверил в репозитории, что у него есть определенный класс, но все равно он не работает

возможно, ваш JAR не имеет этого класса, проверьте, какая версия XMLUNit имеет этот класс, и используйте этот файл JAR.

я добавил свою банку, но в eclipse отличия отображаются красным цветом

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

получение этой ошибки:

"Не удается разрешить org.custommonkey.xmunit:com.springsource.org.custommonkey.xmunit:1.2.0"

как найти несоответствия заказов.

Здравствуйте, не могли бы вы сказать мне, как удалить лишние данные в выводе, которые вы вставили сюда

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

Сравнить два файла с объяснением NotePad++

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

Простое решение, позволяющее быстро узнать, похожи наборы данных или нет, или получить обзор различных строк, — это использовать текстовый редактор Notepad++ в качестве инструмента для сравнения текстовых файлов с дополнительным подключаемым модулем, который можно легко установить из Менеджер плагинов. Он даже работает для сравнения двух файлов XML!

Вам также потребуется установить подключаемый модуль Compare. Для этого перейдите на SourceForge и загрузите последнюю версию плагина. Затем вам просто нужно распаковать загруженный архив в папку установки Notepad++.

Затем откройте 1-й файл и второй файл с помощью текстового редактора Notepad++, и когда два файла, которые вы хотите сравнить, будут двумя последними файлами, открытыми в программе, начните сравнение с Плагином => Сравнить => Сравнить или сочетание клавиш Alt+D.

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

Бесплатное сравнение двух xml-файлов в Notepad++

С помощью инструмента Notepad++ также можно сравнить два XML-файла. Просто выполните предыдущие шаги, а именно Notepad++, сравните установку плагина, откройте XML-файл в Notepad plus plus и сравните их с помощью меню Notepad++ Plugins Compare.

Сравнение XML в Notepad++ будет выполнено мгновенно бесплатно, показывая удаленные строки, добавленные строки, измененный текст в одной строке. Блокнот плюс плюс, вероятно, лучший XML-редактор, поскольку он также работает как средство форматирования XML и является отличным редактором XML для Windows 10.

Вот как редактировать XML-файлы ‌ в блокноте, а также как сохранить XML-файл в блокноте.

notepad++ сравнивает два файла

Выступая в качестве отличного инструмента сравнения файлов, вы также можете сравнивать текстовые файлы с помощью этого трюка сравнения текста с блокнотом ++. Даже сравните документы из двух слов, скопировав текст в Notepad++.

Сравните два текстовых файла с помощью плагина notepad, который используется для сравнения двух файлов в notepad++ и сравнения текстовых файлов notepad++.

Как сравнить два файла?

Загрузите подключаемый модуль сравнения файлов notepad++ и установите его, чтобы использовать подключаемый модуль notepad plus plus для сравнения двух текстовых файлов в notepad++.

Сравните два файла в notepad++:

Таким образом можно сравнивать содержимое файлов любого типа.

Основное использование — сравнение двух текстовых файлов notepad++.

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

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

Как сравнить XML в Notepad++?

Сравните два текстовых файла в Notepad++, чтобы сравнить XML-файлы, открыв обе вкладки и используя меню «Подключаемые модули» > «Сравнить» > «Сравнить».

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

Как проверить разницу между двумя файлами в notepad++?

Чтобы сравнить файлы в NotePad++, используйте плагин сравнения, чтобы проверить различия между двумя файлами, которые должны быть открыты как текстовые файлы, такие как файлы XML, файлы HTML, файлы CSV или другие текстовые файлы для сравнения.

Как установить плагин сравнения для Notepad++?

Загрузите последний подключаемый модуль сравнения с SourceForge и извлеките его в папку установки подключаемого модуля Notepad++, обычно расположенную в «C:\Program Files (x86)\Notepad++\plugins», и перезапустите программу Notepad++, чтобы сравнить два файла с помощью меню Плагины > Сравнить > Сравнить.

Как сравнить два документа Word в notepad++?

Сравнить два текстовых файла в Windows 10 с помощью Notepad++ довольно просто.

Чтобы сравнить текст документов Word, скопируйте текст обоих документов на разные вкладки текстового редактора Notepad++ и используйте подключаемый модуль сравнения Notepad Plus Plus для сравнения текстов.

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

Установите плагин Compare с помощью диспетчера плагинов

Подключаемый модуль сравнения также доступен в диспетчере подключаемых модулей.

После загрузки и установки плагина перезапустите Notepad++, и он будет доступен в меню плагинов > сравнить.

Читайте также: