Comparação XML da Plataforma do Eclipse

O plug-in de Comparação XML permite executar uma comparação estrutural de dois documentos XML. Ele retorna uma árvore de diferenças que indica quais elementos XML foram incluídos ou removidos e, para elementos XML modificados, quais diferenças existem com relação aos atributos ou ao corpo de texto.

Instalando o plug-in

Utilizando o plug-in

O plug-in é automaticamente utilizado ao comparar arquivos com a extensão .xml.
Por padrão, a comparação XML utiliza o método de comparação Unordered, que ignora a ordem em que os elementos XML aparecem no documento e faz sua correspondência para que os elementos mais semelhantes sejam correspondidos. Há também um método de comparação Ordered, que apenas compara os elementos XML exatamente na ordem em que eles aparecem no documento. Na maioria dos casos, esse método de comparação não será muito utilizado.
O método de comparação pode ser gerenciado de uma lista drop-down na barra de ferramentas da visualização da estrutura.

Quando um documento XML contém elementos que podem ser identificados exclusivamente por um atributo ou pelo texto de um elemento filho, é recomendado que um Esquema de Mapeamento de ID seja criado para esse tipo de documento XML.

Consulte Tutorial e Exemplos para obter informações adicionais sobre como utilizar o plug-in.

Esquemas de Mapeamento de ID

Um Esquema de Mapeamento de ID especifica para elementos XML um atributo ou o texto de um elemento filho que identifica exclusivamente esse elemento. Isso garante que, no processo de comparação, os elementos certos sejam correspondidos e, portanto, comparados uns aos outros. Se nenhum Mapeamento de ID for especificado para um elemento XML, será utilizado um algoritmo de correspondência geral. Porém, esse algoritmo de correspondência geral não retorna sempre o resultado desejado. A razão para isso é que o algoritmo de correspondência geral procura uma correspondência dos nós das duas árvores analisadas a comparar que minimiza as diferenças. O efeito é que freqüentemente dois elementos XML são correspondidos, são estruturalmente semelhantes mas representam duas entidades de informação completamente diferentes.

Entradas ordenadas

Ao utilizar a comparação Não Ordenada padrão (com ou sem mapeamentos de id), às vezes é necessário especificar que os filhos de determinados elementos sejam comparados da forma ordenada em vez do método não ordenado usual. Por exemplo, ao comparar arquivos ANT, a ordem de aparecimento dos filhos de elementos target é importante.
Nesses casos, é possível criar uma Entrada ordenada. Uma Entrada ordenada especifica que os filhos diretos de um elemento xml, identificados por seu caminho, serão comparados da forma ordenada (os atributos, porém, ainda são comparados da forma não ordenada). Os filhos desses filhos continuarão a ser comparados da forma não ordenada, a não ser que seja especificado de outra maneira.

Definindo Esquemas de Mapeamento de ID e Entradas ordenadas

Os Esquemas de Mapeamento de ID podem ser criados de três maneiras diferentes:
  1. Estendendo o ponto de extensão idMapping
  2. Utilizando a página de Preferências de Comparação XML.
  3. Utilizando o Botão Criar novo Esquema de Mapeamento de Id na barra de ferramentas e o menu de contexto
O método 1 cria o assim chamado esquema de mapeamento interno. Um Esquema de Mapeamento de ID interno não pode ser editado no tempo de execução. Porém, utilizando o botão Editar Cópia na Página de Preferências, uma cópia editável do Esquema de Mapeamento de ID interno pode ser criada.
Os métodos 2 e 3 criam os esquemas de mapeamento de usuário. Esses são criados pelo usuário no tempo de execução e podem ser modificados a qualquer momento na Página de Preferências.

Os esquemas de mapeamento de usuário e interno podem ser associados a uma extensão de arquivo. Como resultado, ao comparar dois arquivos XML com essa extensão de arquivo, o esquema de Mapeamento de ID particular com essa extensão é automaticamente utilizado.

Ao criar ou editar o mapeamento de ID para um elemento XML particular, quatro itens devem ser especificados (consulte exemplo):

  1. O nome do elemento.
  2. O caminho do elemento. Esse é o caminho do elemento da raiz do documento XML para o pai do elemento.
  3. O nome do id que identificará o elemento
  4. Se o nome do id no ponto 3 é o nome de um atributo do elemento ou o nome de um de seus filhos (nesse caso, o texto desse elemento filho será utilizado como id).


Pontos de Extensão

Apenas um ponto de extensão está disponível no plug-in de Comparação XML. Ele é utilizado para criar Esquemas de Mapeamento de ID internos: