Existe alguma ferramenta Xml Diff / Merge gratuita disponível? [fechadas]


105

Eu tenho vários arquivos de configuração em meus aplicativos .net que gostaria de mesclar elementos de configurações do aplicativo etc.

Eu estava prestes a começar a fazer isso manualmente como costumo fazer, no entanto, pensei que deveria haver uma ferramenta GUI de diff XML disponível em algum lugar.

A ferramenta seria capaz de ir para o nível do elemento para comparar e exibir as diferenças etc.

No entanto, o Google não deu resultados substantivos de ferramentas gratuitas e nenhuma indicação de algo de valor.

Essa ferramenta está disponível? Isso é muito útil? De graça?

Desde já, obrigado. :)

Editar:

Aqui está um pouco de esclarecimento sobre a funcionalidade que transformaria meu trabalho manual entediante e propenso a erros em uma tarefa mais simples de 1 minuto (e com potencial para automatizar):

No KDiff3, você pode fazer uma comparação / fusão de diretórios inteiros. Existe uma diferença hierárquica que é muito precisa, amigável e clara. Eu estava interessado em encontrar uma solução semelhante, no entanto, em vez de hierarquia de diretório, uma hierarquia de elemento XML.

Se não houver tal software de código aberto, estou pensando em criar um no CodePlex para fornecer essa funcionalidade.

Respostas:


11

O KDiff3 não é específico para XML, mas é gratuito. Ele faz um bom trabalho de comparação e fusão de arquivos de texto.


3
Concordo que estou usando o KDiff3 no momento, no entanto, uma ferramenta específica para XML que pudesse descer até o nível de elemento seria excelente.
Russell

2
Eu estava pensando desta perspectiva: da mesma forma que o KDiff faz uma comparação hierárquica de diretórios, uma comparação hierárquica de elementos também poderia funcionar. Portanto, se um elemento foi alterado, eu concordo, os elementos pais também devem ser sinalizados como alterados.
Russell

25
todos percebem que no xml os nós filhos não têm garantia de estar em uma ordem específica, portanto, qualquer "ferramenta" que relatou que algo não estava na mesma ordem de um arquivo para o outro realmente não será uma ferramenta compatível com xml real

7
Se a ordem mudar, os elementos serão diferentes. Dependendo da semântica do documento XML em questão, a ordem pode, ou não, ser significativa. Por exemplo, em XHTML, obviamente, a ordem é importante.
George Lund

7
A questão é que uma ferramenta diff regular funciona com base em linhas. Existem ferramentas de diff específicas para, por exemplo, arquivos CSV que entendem o formato que está sendo diferenciado. Quanto melhor esse entendimento, mais eficaz a diferenciação pode acontecer. Uma boa ferramenta de comparação de XML seria capaz de analisar o XML, usar um esquema para determinar restrições, como se o pedido é importante, por exemplo, e então usar esse conhecimento para fornecer uma experiência de diff / merge muito mais eficaz.
Stijn de Witt

32

Dê uma olhada em Ferramentas de comparação de arquivos , nas quais estou usando o WinMerge . Ele tem a capacidade de comparar documentos XML (você pode desejar habilitar o DisplayXMLFilespré-filtro).

DisplayXMLFiles.dll - Este plugin imprime arquivos XML muito bem, inserindo guias e quebras de linha. Isso é útil para arquivos XML que não possuem retornos de linha em locais convenientes.

WinMerge em ação

Veja também minha tabela de comparação de recursos .


6
+1 Winmerge versão 2.12.4.0; Menu "Plugin" -> "Lista" -> marque "Ativar Plugins"; Menu "Plugin" -> marque "Descompactação automática". Testado com arquivo XML com nome de arquivo com extensão .xml e parece funcionar.
Alessandro Jacopson,

10
Ele não lida bem com atributos que estão em ordens diferentes, então sua utilidade pode ser limitada, dependendo da sua situação.
Michael Kohne

Use esta transformação em qualquer arquivo XML primeiro para classificar elementos e atributos: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid

1
Parece que o plugin não está mais disponível.
Fernando Gonzalez Sanchez

Não sei por que não está no instalador, mas consegui obtê-lo em seu repositório src no bitbucket / código-fonte (sourceforge DL): bitbucket.org/winmerge/winmerge/src/…
aCodeMonkey

21

Escrevi e lancei um aplicativo do Windows que resolve especificamente o problema de comparação e fusão de arquivos XML.

Projeto: Mesclar pode realizar comparações e mesclagens de duas ou três maneiras de qualquer arquivo XML (onde dois dos arquivos são considerados revisões independentes de um arquivo de base comum). Você pode instruí-lo a identificar os elementos nos arquivos de entrada por valores de atributo ou o conteúdo de elementos filho, entre outras coisas.

É totalmente controlável através da linha de comando e também pode gerar relatórios de texto contendo as diferenças entre os arquivos.

Projeto: mesclar mesclando três arquivos XML


Olá @James, obrigado pela informação. Obviamente, seria bom se fosse gratuito, mas fornece algumas funcionalidades muito interessantes - e seu exemplo acima é um clássico de por que essa ferramenta é tão útil! Obrigado pela sua postagem. :)
Russell

Eu tentei o Project :: Merge e infelizmente não foi capaz de dar conta da minha tarefa. Eu tenho texto HTML em paras ( <p>) que adiciona formatação (como <i>, <em>). Assim, Project :: Merge mostra que o para completo foi alterado, ele não faz análise de palavras em profundidade.
dma_k

Sim, lamento dizer que o suporte a XHTML (nunca fará HTML legado) é bastante limitado a esse respeito, assim como a diferenciação de texto em blocos XML em geral. A maior parte do trabalho até agora se concentrou em arquivos XML no estilo de configuração, em que os dados de caracteres de forma livre são limitados em sua extensão e uso. Espero melhorar o Project: Merge nesta área em uma versão futura.

2
-1, O OP perguntou sobre software livre. O Project Merge é um trialware e também não é atualizado há 3 anos.
yourbuddypal

3
Projeto: Merge agora foi substituído por Oso XML Merge: osocorporation.com/xmlmerge/index.php
leetNightshade


3

Eu uso o TortoiseMerge, que está incluído no programa TortoiseSVN

E falamos sobre ferramentas File Diff neste tópico, não dedicado a XML embora

/programming/1830962/file-differencing-software-on-windows


1
Obrigado S.Mark, como mencionei ao epotter, eu já uso o KDiff3 para diffs gerais de arquivos, no entanto, eu realmente prefiro um utilitário diff específico para XML se estiver disponível (se não, vou iniciar um de código aberto :))
Russell

>> (if not, I will start up an open-source one :)Nossa, maravilhoso! irá esperar por isso, por favor, solte o link em algum lugar aqui Se começar
VOCÊ

3

Embora não seja uma ferramenta GUI, meus testes rápidos indicaram que diffxml é promissor. O autor parece ter pensado sobre as complexidades de representar diffs para elementos aninhados de uma forma padronizada (sua especificação DUL - Delta Update Language).

Instalando e rodando suas ferramentas, posso dizer que a saída do texto bruto é bastante clara e concisa. Ele não oferece o mesmo grau de apreensão imediata que uma ferramenta GUI, mas dado que a saída é padronizada como DUL, talvez você pudesse pegar isso e construir uma ferramenta para gerar uma representação visual. Eu certamente adoraria ver um.

A seção de "links" do autor faz referência a algumas outras ferramentas de diferenciação XML, mas, como você mencionou em sua postagem, são todas proprietárias.


4
Minha experiência é que: ele não consegue lidar com a reordenação de elementos de forma alguma, o que seria esperado em uma ferramenta XML (como uma opção, porque às vezes a ordem é importante) e, em vez de diferenças mínimas, mostra todos os elementos alterados . Basicamente, o arquivo diff é apenas um arquivo XML totalmente novo se houver grandes mudanças de formatação sem grandes mudanças semânticas.
SilverbackNet

3

A ferramenta Pretty Diff foi criada com XML em mente. Apenas certifique-se de clicar na opção "marcação".

http://prettydiff.com/


Mas essa é uma ferramenta online, certo? Como posso aplicar as alterações da esquerda para a direita ou mesclar?
dma_k

Você também precisa alterar as opções de classificação, caso contrário, ele sinaliza os elementos XML como alterados quando tudo o que eles fizeram foi movidos (a ordem não importa no XML, então isso não deve aparecer como uma alteração). No entanto, ele ainda não classifica as seções aninhadas com base em seu conteúdo, então você ainda verá adições e remoções de grandes blocos XML quando tudo o que aconteceu foi a ordem dos elementos alterada, portanto, não é possível obter uma comparação refinada.
Malvineous




0

Eu recomendo que você use a ferramenta CodeCompare . Suporta realce nativo de dados XML e pode ser uma boa solução para sua tarefa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.