Classificando arquivos XML para que as diferenças possam ser encontradas

6

Eu preciso comparar dois arquivos XML, cada um com cerca de 13.000 linhas.

Infelizmente, o código que gera esses arquivos não gera os dados na mesma ordem a cada vez (os dados vêm de um banco de dados).

Portanto, recebo falsos positivos ao usar um utilitário padrão de comparação linha por linha (WinMerge), mesmo após canonizando o arquivo XML .

Como um exemplo do meu problema:

arquivo1:

<a>
  <b key="fruit.preferred">banana</b>
  <b key="fruit.available">pineapple</b>
  <b key="fruit.available">apple</b>
  <b key="fruit.available">orange</b>
</a>

arquivo2:

<a>
  <b key="fruit.available">pineapple</b>
  <b key="fruit.preferred">banana</b>
  <b key="fruit.available">apple</b>
  <b key="fruit.available">orange</b>
</a>

Esses arquivos têm o mesmo conteúdo, mas a posição da linha de banana significa que eles são considerados diferentes pelo diff tradicional. Existem ferramentas que podem executar uma classificação de modo que os arquivos sejam considerados iguais?

A propósito, as estruturas de arquivos XML são mais complicadas do que os exemplos acima!

    
por Rich 13.09.2011 / 13:41

1 resposta

0

Acho que você pode usar uma ferramenta como xmldiff para esse propósito.

link

Na página da Web de ferramentas, ele afirma:

The standard Unix tools diff and patch are used to find the differences between text files and to apply the differences. These tools operate on a line by line basis using well-studied methods for computing the longest common subsequence (LCS).

Using these tools on hierarchically structured data (XML etc) leads to sub-optimal results, as they are incapable of recognizing the tree-based structure of these files.

    
por 15.12.2013 / 15:07