2010-08-05 17 views
10

Sto cercando uno strumento di controllo della versione open source in grado di diff e unire file XML.Controllo versione con XML diff e unione

La difficoltà devo trovare uno di questi strumenti è, che ho bisogno di una corretta fusione di un file XML di confronto tra i nodi e non le linee.

Qualche idea? Grazie!

+0

Probabili soluzioni: [Strumenti gratuiti Xml Diff/Merge] (http://stackoverflow.com/questions/1871076), [XML Diff e Merge] (http://stackoverflow.com/questions/430001) –

risposta

2

Qualcosa che ho usato in passato è diffxml. Potresti essere in grado di usarlo come comando diff per un VCS come svn o git.

6

Sfortunatamente, non esiste una soluzione valida per questo problema. La diffusione di XML è molto sensibile a ciò che consideri diverso. In un caso l'ordine dei nodi figli potrebbe essere importante, e in un altro caso (forse anche nello stesso file) potrebbe essere irrilevante.

Dai uno sguardo allo XMLUnit. Sebbene sia finalizzato al test unitario, è un motore di differenziazione XML completo. Devi dire (nel codice) come determinare che due nodi sono idonei per il confronto, e quindi cosa fare con tutte le potenziali differenze riscontrate (cioè sono reali o meno, nella tua applicazione). Si rileva un elenco esaustivo di "eventi differenza", tra cui

  • ordine attributo
  • numero di attributi
  • Bambino ordine nodo
  • numero di nodi figli
  • implicita vs attributo esplicito Valori
  • commento differenze
  • differenze DOCTYPE
  • namespac e differenze

E un sacco in più. Ognuno di questi potrebbe essere importante o non importante per la tua applicazione, e solo tu puoi decidere. Vale la pena dare un'occhiata, ma ci vorrà del lavoro per ottenere quello che vuoi.

1

Stai cercando uno strumento diff, che è solo un sottoinsieme di ciò che è un VCS. Tutti i VCS 'possono usare un programma esterno per diffondere i file. Dal momento che lo strumento differenziale esterno può essere qualsiasi cosa, potrebbe anche essere uno script scritto da te, che è personalizzato per analizzare e confrontare due documenti xml.

Non so se questo rende più facile per voi trovare quello che stai cercando, ma potrebbe.

-2

Come altri hanno sottolineato è solo bisogno di uno strumento diff buono non vcs.

Sfortunatamente non ho sentito nessuno strumento grafico di diff che supporta xml. Quindi userei uno strumento diff regolare come (winmerge o k3diff) e quindi convaliderò l'xml risultante dall'unione usando uno strumento di convalida xml che ti piace.

-1

Dovrebbe essere un semplice strumento tutto in uno per utenti fittizi/pigri. API o programmi di console non si adattano. Sembra davvero che non esista nel mondo open-source.

Clearcase può farlo ma è costoso. Oxygen può essere unito ma non è gratuito.

+1

si dovrebbe probabilmente trasformarlo in una sezione di aggiornamento delle domande. Questa non è una risposta. Il programma di console – firegurafiku

+0

è perfetto finché richiede un solo comando – Mike76

2

Project: Merge è stato progettato per risolvere questo problema esatto: confronto e unione di file XML tramite il software SCM.

Temo che non sia gratuito, ma è significativamente più economico di altri strumenti che sostengono di essere in grado di confrontare e unire XML.