Diff. XML tollerante la lunghezza della linea


13

Ho esaminato le risposte a questa domanda , e sfortunatamente nessuno di loro mi ha aiutato finora.

Per non parlare del bush, la seconda edizione di C # in Depth è ora in modifica copia. Voglio essere in grado di vedere cosa ha fatto l'editor di copie molto facilmente, così posso rifiutare o accettare le sue modifiche.

Stiamo usando una forma modificata di docbook, ma sono abbastanza contento di guardare l'origine XML non elaborata. Tutto bene finora - tranne che quando l'editor di copia fa una modifica, questo può cambiare il ritorno a capo. Quindi qualcosa che era solito leggere:

<para>Foo bar baz
 second line</para>

ora legge

<para>Foo bar grontle
 baz second line</para>

Ora il vero cambiamento qui è l'inserimento di "grontle". Non mi interessa che "baz" sia passato dalla prima alla seconda riga, ma tutti gli strumenti diff che ho visto lo fanno.

Mi rendo conto che un'opzione sarebbe quella di riformattare l'intero documento (o forse solo interi paragrafi) in singole righe ... ma è davvero difficile da leggere, perché gli strumenti diff non si avvolgono quando vengono visualizzati.

Sono sicuro di riuscire a gestirli con gli strumenti che ho, ma se qualcuno sa qualcosa di meglio, sarei davvero felice di saperlo. Sospetto che lo farebbero anche i miei editori.

(Ho incluso qui il tag Windows perché ne avrei davvero bisogno che fosse disponibile su Windows. Vorrei sapere anche di qualsiasi software non Windows, ma solo nel caso in cui potessi aiutare a costruirlo su Windows.

Risposte:


9

Sembra che SourceGear DiffMerge ti dia questo, con il suo supporto di regole per XML (e molti altri linguaggi). Non sono sicuro che risolverà tutti i tuoi problemi, perché l'esempio è ovviamente una semplificazione del programma attuale. Ho provato cambiamenti leggermente più complessi e anche quelli sembrano funzionare bene.

Vedi l'esempio seguente per la differenza che hai descritto

semplice diff


1
Ho appena dato una rapida occhiata ai file reali e sembra che funzioni perfettamente. Grazie così tanto!
Jon Skeet,

4

La mia soluzione è senza paragoni . (uno strumento molto più potente)

Quindi iniziamo vedendo il problema.

inserisci qui la descrizione dell'immagine

BC ha un ruolo di analisi XML speciale: (ha già un ruolo XML, ma non con la pre-analisi, che è ordinata e ordinata )

inserisci qui la descrizione dell'immagine

quindi andiamo a http://www.scootersoftware.com/download.php?zz=kb_moreformats_alt

inserisci qui la descrizione dell'immagine

e adesso -

inserisci qui la descrizione dell'immagine

spero che lo userai per la prossima edizione di C # in profondità

ps se il testo nelle immagini è troppo piccolo, basta fare clic sull'immagine per caricare quelli originali.


Tra cosa significa " Namir.78 "?
Pacerier,


0

Ho avuto lo stesso problema in un'azienda non molto tempo fa. Volevano trovare un vero "XML differ" e non sembrano esserci soluzioni complete.

La soluzione più semplice è eseguire prima uno script di stampa sull'XML per normalizzare le terminazioni e la spaziatura, quindi eseguire lo strumento diff preferito ( WinMerge è utile per Windows). Questo lascia cadere molto del flotsam che la maggior parte dei difftools ti lancerà da XML, ed è davvero facile costruire uno script.


Il problema è che l'XML è già abbastanza stampato, efficacemente: sono gli inserimenti e le cancellazioni che cambiano il punto in cui le linee sono avvolte. Mi chiedo se ho bisogno di qualcosa per riformattare un file in base alle parole che compaiono alle estremità delle righe in un altro :(
Jon Skeet

0

SD Smart Differencer confronta i documenti in base alla struttura anziché al layout effettivo.

C'è un differenziale intelligente XML. Per XML, ciò significa ordine corrispondente di tag e contenuto. Dovrebbe notare che la stringa di testo nel frammento specifico che hai indicato era diversa. (Al momento non capisce la nozione XML di testo in cui lo spazio bianco è normalizzato rispetto a significativo, ma sospetto che non ti farà molto male).


0

@Jon Skeet: nella tua domanda hai detto che gli strumenti diff non si avvolgono quando vengono visualizzati.
vimdiff(disponibile anche su Windows tramite gvim) consente di avvolgere i file XML visualizzati con :window set wrap. Link di riferimento .
Inoltre è possibile eseguire :diffupdateper aggiornare le differenze.

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.