2009-02-13 19 views
40

Sto cercando uno strumento di confronto XML che comprenda xml. Non può essere un confronto linea per riga come WinMerge o Beyond Compare.Strumento o libreria per confrontare file xml

Una soluzione ideale sarebbe quella che mostra modifiche simili al modo in cui Word 2007 mostra le modifiche di traccia. DeltaXML fa questo, ma non sono dotati di una vera e propria interfaccia grafica 'out of the box' e è di $ 500 per utente !:

http://i41.tinypic.com/os8k5k.jpg

ExamXml lavori fuori dalla scatola, ma visualizza le differenze in maniera confusa. Non ha un concetto di prima e dopo, mostra solo le differenze:

alt text http://www.a7soft.com/images/examxml1_.gif

Lo strumento dovrebbe avere il concetto di utilizzare gli attributi come chiave, in modo che non pensa che un elenco riordinato di gli elementi sono cambiati. DeltaXML lo fa ma non sono riuscito a configurarlo correttamente per la schermata.


UPDATE:

Finora ExamlXML è il meglio della soluzione scatola. Ma manca dei concetti di gestione delle modifiche di DeltaXML. Risultante in alcuni problemi di usabilità.

DeltaXML è più o meno la soluzione che ho bisogno, ma qualcosa con più funzionalità out of the box sarebbe meglio. DeltaXML richiede la scrittura di codice java per chiamare l'API, insieme alla scrittura di XSL per trasformare l'xml nell'input previsto.

+0

Per favore chiarisci di più - nel tuo esempio quale output dovrebbe produrre lo strumento putativo diff? –

+1

Chi fa downvoting di tutte le risposte a questa domanda? Piuttosto infantile. – BobbyShaftoe

+0

Ne ho svalutato un numero di me stesso, poiché ritengo che tutte le utilità menzionate siano applicazioni di qualità che le persone non tecnologiche potrebbero gestire con una certa formazione. –

risposta

13

Se ho capito il tuo problema, probabilmente hai un'applicazione che utilizza file XML come memoria dati e la GUI astrae i nomi dei tag "tecnici" in etichette "user friendly" - di nuovo, presumo. Quindi sarebbe un'estensione naturale osservare le differenze in modo simile. Suppongo anche che la tua applicazione non abbia una funzione di diff che segua il concetto di "astrazione".

Ho effettuato alcune ricerche e ho trovato un'app (ExamXML) che sembra avvicinarsi con le funzioni di evidenziazione. Ho scaricato la versione di valutazione e testato i file contro di essa:

http://www.programmedintheusa.com/images/stack547399.png

Si fa un buon lavoro di mettere in evidenza le differenze. Sembra abbastanza interattivo e si apre con quante differenze. Sembra che tu possa cambiare i colori che usa, quindi potresti usare grigi e bianchi per de-enfatizzare i tag. Sembra anche avere un sacco di opzioni che puoi pre-impostare anche per i tuoi utenti.

Desidero notare che sarà difficile trovare uno strumento di confronto XML che non mostri i nomi dei tag, poiché i tag rappresentano il contesto del contenuto. Se togli il contesto, diventa difficile capire i dati visualizzati. Comunque, forse questo strumento potrebbe essere utile. Hai anche provato a mostrare ai tuoi utenti alcuni di questi strumenti e vedere cosa sono disposti a tollerare, a volte possono sorprenderti. Spero che questo ti aiuti!

+0

Grazie John, questa è la migliore risposta finora. – joe

+0

Cosa c'era nella foto prima che fosse rimossa? Uno screenshot? –

+0

@JirkaHanika Sì. Non sono sicuro del motivo per cui è andato via così. –

0

Hai provato examdiff? Ovviamente è ancora uno strumento tecnologico, ma è facile lavorarci. Ha un'interfaccia drag and drop per confrontare i file.

-1

Uso sempre kdiff3. È facile da usare e può confrontare fino a 3 file. http://kdiff3.sourceforge.net/

+0

È sensibile all'XML? Io non la penso così, credo che li tratti semplicemente come semplici file di testo e così i differ di spot che non esistono nell'infoset XML (come un cambio di codifica). – bortzmeyer

+0

hai ragione - il suo solo confronto testuale. – mspoerr

1

Provare Notepad XML da Microsoft MSDN XML ha un confronto file XML. Non ho idea di quanto sia bello.

2

Beyond Compare è eccellente come @BobbyShaftoe ha già detto. Per la fusione tuttavia, mi piace usare Araxis Merge. Lo usiamo per scopi simili abbastanza spesso.

Per quanto riguarda i suoi commenti circa la capacità non tecnico degli utenti:

Grazie per le risposte ... Ma queste sembrano tutti troppo tecnico. I miei utenti normalmente non vedono i tag xml perché il loro strumento di authoring XML li allontana. Ci sono strumenti che mostrano differenze nel contenuto del testo, ma non mostrano (o non depurano) i tag xml.

Ho intenzione di lanciarlo là fuori: i tuoi utenti dovrebbero imparare.Se si dispone di unire e modificare i file XML, presumo potenzialmente la conservazione di record o la configurazione dell'applicazione, allora dovrebbero avere almeno una comprensione rudimentale di ciò che stanno facendo. Non devono essere appassionati di XML per utilizzare gli strumenti elencati e portare a termine il lavoro.

Se, tuttavia, richiedere agli utenti di avere una conoscenza rudimentale del lavoro che stanno facendo è impossibile, quindi suggerirei di scrivere un programma di configurazione personalmente e di consegnarlo per gli utenti finali, piuttosto che affidarsi a software di terze parti.

0

È possibile che The XML Diff and Patch GUI Tool (codice di esempio su MSDN) soddisfi le vostre esigenze un po 'meglio: mostra ancora i tag, ma enfatizza la differenza di testo. Dal momento che hai ottenuto il codice, per un piccolo sforzo in più potresti personalizzarlo in modo più preciso alle tue esigenze.

Sebbene il campione sia relativamente anziano (luglio 2004 e ha le sue radici nel 2002), esegue l'aggiornamento a Visual Studio Express C# 2008 in modo indolore. Non scoraggiate quando scaricate il sample dal sito MSDN se/quando l'MSI del programma di installazione menziona "Bulkload SQLXML nell'esempio di codice .NET" - non lo è!

+0

Grazie per il link. Ho eseguito l'utilità su alcuni file che l'utente avrebbe, e l'output di confronto è stato un bel formato. Sfortunatamente ha marcato erroneamente parte dell'XML come diverso quando non lo era. – joe

3

Potrei provare DeltaXML + una trasformazione XSLT per ottenere il risultato specifico desiderato. Un problema con l'utilizzo di strumenti di confronto in testo semplice con XML è che la forma fisica di un documento XML (il suo rientro, ecc.) Può cambiare anche se il contenuto stesso non lo fa, il che potrebbe portare a molti falsi positivi. DeltaXML è un ottimo strumento per confrontare l'XML basato su documenti.

Inoltre, a seconda dell'editor utilizzato dagli utenti, potrebbe avere un sistema di differenziazione XML integrato. Ad esempio, Arbortext Editor ha un buon strumento che mostra il testo (non i tag) con le modifiche evidenziate/struck-through.

+0

Questa sembra una buona soluzione, anche se alla fine costosa ($ 500 per utente). – joe

3

Altova diffDog XML Spy e DiffDog sono strumenti eccezionali. Prendili dalle mie fredde mani morte, un po 'di roba.

0

Oxygen XML Editor ha lo strumento di differenziazione XML della raccolta migliore che ho trovato. Esistono diversi Algoritmi per il confronto, quindi se il default non funziona per te, prova Sintassi Aware o alcuni degli altri Algoritmi (ora sto usando la versione 8 e non ho aggiornato alla versione 10 quindi ymmv, ma dubito che il differenziale XML è peggiorato).

17

Sono molto sorpreso nessuno ha menzionato di XML NotePad

È gratuito e si può creare un buon confronto, dire quali elementi/attributi sono cambiati, spostati, state eliminate, ecc .:

(Scusate se Microsoft gli screenshot sono un po 'larghi).

è inoltre possibile applicare XLSes al file XML e fare diverse operazioni di editing. Vale la pena provare.

+1

Puoi dirmi come arrivare alla funzione di confronto? Grazie. – joe

+2

Sicuro.Si apre un file xml, quindi si passa al menu "Visualizza" e si fa clic su "confronta file XML" – Sylverdrag

+0

Ho appena provato XMLNotepad e l'ho trovato molto interessante. Grazie per averlo suggerito. – paradisonoir

0

So che questa è una filettatura obsoleta, ma Project: Merge è una nuova applicazione Windows in grado di gestire fusioni e confronti a due vie e a tre vie di file XML. (Un'operazione a tre vie presuppone che ci siano due file entrambi derivati ​​da un file di base comune.)

Potrebbe essere necessario indicare come identificare singoli elementi per funzionare perfettamente sui file, ma è abbastanza facile da fare e dovrai farlo solo una volta.