Сравнение XML на платформе Eclipse

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

Установка модуля

Работа с модулем

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

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

За дополнительной информацией о работе с этим модулем обратитесь к документу Учебник и примеры.

Схемы соответствия идентификаторов

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

Записи Ordered

Иногда при выполнении неупорядоченного сравнения, применяемого по умолчанию (как со схемой соответствия идентификаторов, так и без нее) требуется указать, что для потомков определенных элементов должно выполняться упорядоченное сравнение. Например, при сравнении файлов ANT важен порядок появления потомков элементов target.
В этом случае можно создать запись Ordered. Запись Ordered указывает, что для прямого потомка элемента xml, идентифицируемого его путем, будет выполняться упорядоченное сравнение (при этом для атрибутов все-таки будет выполняться неупорядоченное сравнение). При этом для дочерних элементов этих потомков будет выполняться неупорядоченное сравнение, если не указано иное.

Определение схем соответствия идентификаторов и записей Ordered

Схемы соответствия идентификаторов можно создавать тремя различными способами:
  1. путем расширения точки расширения idMapping
  2. с помощью страницы Параметры сравнения XML.
  3. с помощью кнопки Создать новую схему Id Map в панели инструментов и контекстного меню
Метод 1 создает так называемую внутреннюю схему соответствия идентификаторов. Ее нельзя редактировать во время выполнения. Однако для нее можно создать изменяемую копию с помощью кнопки Изменить копию на странице Параметры.
Способы 2 и 3 применяются для создания так называемых пользовательских схем соответствия идентификаторов. Эти схемы создаются пользователем во время выполнения, и их можно в любое время изменить на странице Параметры.

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

При создании или изменении соответствия идентификаторов для отдельного элемента XML необходимо задать четыре атрибута (см. пример):

  1. Имя элемента.
  2. Путь элемента. Это путь от корня документа XML до предка этого элемента.
  3. Имя идентификатора, по которому будет идентифицироваться этот элемент.
  4. Какое имя указано в пункте 3: имя атрибута элемента или имя одного из его потомков (тогда в качестве идентификатора будет использоваться текст данного дочернего элемента).


Точки расширения

В модуле Сравнение XML доступна только одна точка расширения. Она предназначена для создания внутренних схем соответствия идентификаторов: