Sono disponibili strumenti Xml Diff / Merge gratuiti? [chiuso]


105

Ho diversi file di configurazione nelle mie applicazioni .net che vorrei unire gli elementi delle impostazioni dell'applicazione ecc.

Stavo per iniziare a farlo manualmente come faccio di solito, tuttavia ho pensato che doveva esserci uno strumento GUI diff XML disponibile da qualche parte.

Lo strumento sarebbe in grado di andare a livello di elemento per confrontare e visualizzare le differenze, ecc.

Tuttavia Google non ha fornito risultati sostanziali di strumenti gratuiti e nessun suggerimento per qualcosa di valore.

È disponibile uno strumento del genere? È molto utile? Gratuito?

Grazie in anticipo. :)

Modificare:

Ecco un po 'di chiarimento sulla funzionalità che trasformerebbe il mio lavoro manuale soggetto a errori e noioso in un'attività più semplice di 1 minuto (e potenziale di automazione):

In KDiff3, puoi fare un diff / merge di intere directory. C'è un diff gerarchico che è molto preciso, intuitivo e chiaro. Ero interessato a trovare una soluzione simile, tuttavia invece della gerarchia di directory, una gerarchia di elementi XML.

Se non esiste un tale software open source, sto valutando di crearne uno su CodePlex per fornire questa funzionalità.

Risposte:


11

KDiff3 non è specifico per XML, ma è gratuito. Fa un buon lavoro di confronto e fusione di file di testo.


3
Sono d'accordo che sto usando KDiff3 al momento, tuttavia uno strumento specifico per XML che potrebbe scendere a livello di elemento sarebbe fantastico.
Russell

2
Stavo pensando da questa prospettiva: il modo in cui KDiff esegue un diff gerarchico di directory, potrebbe funzionare anche un diff gerarchico di elementi. Quindi, se un elemento è cambiato, allora sono d'accordo, anche gli elementi principali dovrebbero essere contrassegnati come modificati.
Russell

25
tutti si rendono conto che in xml non è garantito che i nodi figli siano in un ordine specifico, quindi qualsiasi "strumento" che ha segnalato che qualcosa non era nello stesso ordine da un file all'altro in realtà non sarà un vero strumento conforme a xml

7
Se l'ordine cambia, gli elementi sono diversi. A seconda della semantica del documento XML in questione, l'ordine può, o meno, essere significativo. Ad esempio in XHTML ovviamente l'ordine è importante.
George Lund

7
Il punto è che uno strumento diff normale funziona in base alla linea. Esistono strumenti di diff specifici per es. I file CSV che comprendono il formato in cui è diverso. Migliore è la comprensione, più efficace può verificarsi la differenza. Un buon strumento di diff XML sarebbe in grado di analizzare l'XML, utilizzare uno schema per determinare i vincoli, ad esempio se l'ordine è importante, e quindi utilizzare quella conoscenza per fornire un'esperienza di diff / merge molto più efficace.
Stijn de Witt

32

Dai un'occhiata agli strumenti di confronto dei file , da cui sto usando WinMerge . Ha la capacità di confrontare i documenti XML (potresti voler abilitare il DisplayXMLFilesprefiltro).

DisplayXMLFiles.dll - Questo plugin stampa bene i file XML inserendo tabulazioni e interruzioni di riga. Ciò è utile per i file XML che non hanno ritorni di riga in posizioni convenienti.

WinMerge in azione

Vedi anche la mia tabella di confronto delle caratteristiche .


6
+1 Winmerge versione 2.12.4.0; Menu "Plugin" -> "Elenco" -> seleziona "Abilita plugin"; Menu "Plugin" -> seleziona "Disimballaggio automatico". Testato con file XML con nome file con estensione .xml e sembra funzionare.
Alessandro Jacopson

10
Non gestisce bene gli attributi che si trovano in ordini diversi, quindi la sua utilità potrebbe essere limitata, a seconda della situazione.
Michael Kohne

Utilizzare questa trasformazione su qualsiasi file XML prima agli elementi di ordinamento e gli attributi: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
Larry David

1
Sembra che il plug-in non sia più disponibile.
Fernando Gonzalez Sanchez

Non sono sicuro del motivo per cui non è nel programma di installazione, ma sono stato in grado di ottenerlo dal loro repository src su bitbucket / codice sorgente (sourceforge DL): bitbucket.org/winmerge/winmerge/src/…
aCodeMonkey

21

Ho scritto e rilasciato un'applicazione Windows che risolve specificamente il problema del confronto e dell'unione di file XML.

Progetto: Merge può eseguire confronti e unioni a due e tre vie di qualsiasi file XML (dove due dei file sono considerati revisioni indipendenti di un file di base comune). Puoi istruirlo a identificare gli elementi all'interno dei file di input in base ai valori degli attributi o al contenuto degli elementi figlio, tra le altre cose.

È completamente controllabile tramite la riga di comando e può anche generare rapporti di testo contenenti le differenze tra i file.

Progetto: unisci unendo tre file XML


Ciao @ James Grazie per le informazioni. Ovviamente sarebbe bello se fosse gratuito, ma fornisce alcune funzionalità molto interessanti - e il tuo esempio sopra è un classico del motivo per cui questo strumento è così utile! Grazie per il tuo post :)
Russell

Ho provato Project :: Merge e sfortunatamente non è stato in grado di far fronte al mio compito. Ho testo HTML in paras ( <p>) a cui viene aggiunta la formattazione (come <i>, <em>). Quindi Project :: Merge mostra che il para completo è stato modificato, non esegue un'analisi approfondita delle parole.
dma_k

Sì, mi dispiace dover dire che il supporto XHTML (non farà mai HTML legacy) è piuttosto limitato da questo punto di vista, così come la differenziazione del testo all'interno dei blocchi XML in generale. La maggior parte del lavoro fino ad ora si è concentrata su file XML in stile configurazione in cui i dati dei caratteri in formato libero sono limitati nella loro estensione e utilizzo. Spero di migliorare Project: Merge in quest'area in una versione futura.

2
-1, L'OP ha chiesto informazioni sul software libero. Project Merge è un software di prova e inoltre non è stato aggiornato da 3 anni.
yourbuddypal

3
Progetto: Merge è stato ora sostituito da Oso XML Merge: osocorporation.com/xmlmerge/index.php
leetNightshade


3

Uso TortoiseMerge, che è incluso nel programma TortoiseSVN

E abbiamo parlato degli strumenti File Diff in questo thread, non dedicato a XML però

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


1
Grazie S.Mark, come ho detto a epotter, uso già KDiff3 per diff generali di file, tuttavia preferirei davvero un'utilità diff specifica XML se disponibile (in caso contrario, ne avvierò una open-source :))
Russell

>> (if not, I will start up an open-source one :)Wow, meraviglioso! non vedrà l'ora, per favore rilascia il link da qualche parte qui Se inizia.
YOU

3

Anche se questo non è uno strumento GUI, i miei test rapidi hanno indicato che diffxml ha qualche promessa. L'autore sembra aver pensato alla complessità della rappresentazione dei diff per elementi annidati in modo standardizzato (la sua specifica DUL - Delta Update Language).

Installando ed eseguendo i suoi strumenti, posso dire che l'output di testo grezzo è abbastanza chiaro e conciso. Non offre lo stesso grado di apprensione immediata di uno strumento GUI, ma dato che l'output è standardizzato come DUL, forse saresti in grado di prenderlo e creare uno strumento per generare una rappresentazione visiva. Mi piacerebbe sicuramente vederne uno.

La sezione "link" dell'autore fa riferimento ad alcuni altri strumenti di differenziazione XML, ma come hai menzionato nel tuo post, sono tutti proprietari.


4
La mia esperienza è che: non può gestire il riordino degli elementi, che è qualcosa che ci si aspetterebbe in uno strumento XML (come opzione, perché a volte l'ordine è importante), e invece di differenze minime mostra interi elementi modificati . Fondamentalmente il file diff è solo un file XML completamente nuovo se ci sono importanti cambiamenti di formattazione senza grandi cambiamenti semantici.
SilverbackNet

3

Lo strumento Pretty Diff è stato creato pensando a XML. Assicurati solo di fare clic sull'opzione "markup".

http://prettydiff.com/


Ma questo è uno strumento online, giusto? Come posso applicare le modifiche da sinistra a destra o unire?
dma_k

È inoltre necessario modificare le opzioni per l'ordinamento, altrimenti contrassegna gli elementi XML come modificati quando tutto ciò che hanno fatto è stato spostato (l'ordine non ha importanza in XML, quindi non dovrebbe apparire come una modifica). Tuttavia, non ordina ancora le sezioni nidificate in base al loro contenuto, quindi vedrai ancora aggiunte e rimozioni di blocchi XML di grandi dimensioni quando tutto ciò che è successo è stato che gli elementi hanno cambiato ordine, quindi non è possibile ottenere un diff granulare.
Malvineous




0

Ti consiglio di utilizzare lo strumento CodeCompare . Supporta l'evidenziazione nativa dei dati XML e può essere una buona soluzione per il tuo compito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.