Satır uzunluğuna toleranslı XML farkı


13

Bu sorunun cevaplarına baktım ve maalesef hiçbiri bana şu ana kadar yardımcı olmadı.

Bush hakkında yenmek için değil, Derinlik C # ikinci baskı şimdi kopya düzenleme. Kopya editörünün gerçekten ne yaptığını görmek istiyorum, böylece değişikliklerini reddedebilir veya kabul edebilirim.

Değiştirilmiş bir docbook formu kullanıyoruz, ancak ham XML kaynağına baktığım için mutluyum. Şimdiye kadar her şey yolunda - kopya editörü bir değişiklik yaptığında, satır kaydırmayı değiştirebilir. Yani eskiden okumak için bir şey:

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

şimdi okuyor

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

Şimdi buradaki gerçek değişiklik “grontle” ın sokulması. "Baz" ın ilk satırdan ikinci satıra taşınması umrumda değil, ama gördüğüm tüm fark araçları bunu yapıyor.

Bir seçeneğin tüm belgeyi (veya muhtemelen tüm paragrafları) tek bir satıra yeniden biçimlendirmek olduğunu anlıyorum ... ancak o zaman okumak gerçekten zor, çünkü fark araçları görüntülerken sarılmıyor.

Eminim sahip olduğum aletlerle başarabilirim , ama eğer birisi daha iyi bir şey bilirse, bunu duyduğuma çok sevinirim. Yayıncılarımın da yapacağından şüpheleniyorum.

(Windows etiketini buraya ekledim, çünkü gerçekten Windows'ta kullanılabilir olması gerekiyordu. Windows dışındaki herhangi bir yazılımı da duymak istiyorum , ancak yalnızca Windows üzerinde oluşturmaya yardımcı olabilirsem.

Yanıtlar:


9

SourceGear DiffMerge , XML için kural kümesi desteği (ve diğer birçok dil) ile bunu size verecek gibi görünüyor . Tüm sorunlarınızı çözüp çözmeyeceğinden emin değilim, çünkü örnek elbette gerçek programın basitleştirilmesidir. Biraz daha karmaşık değişiklikler denedim ve bunlar da iyi çalışıyor gibi görünüyor.

Açıkladığınız fark için aşağıdaki örneğe bakın

basit fark


1
Gerçek dosyalara hızlıca baktım ve işi mükemmel şekilde yapıyor gibi görünüyor. Teşekkürler bu kadar çok!
Jon Skeet

4

Benim çözümüm kıyaslamanın ötesinde . (çok daha güçlü bir araç)

Bu yüzden sorunu görerek başlıyoruz.

resim açıklamasını buraya girin

BC'nin özel bir XML ayrıştırma rolü vardır: (zaten XML rolüne sahiptir, ancak ön analizle değil - Sıralanır ve Tidied edilir )

resim açıklamasını buraya girin

http://www.scootersoftware.com/download.php?zz=kb_moreformats_alt adresine gidiyoruz.

resim açıklamasını buraya girin

ve şimdi -

resim açıklamasını buraya girin

Umarım bir sonraki C # sürümü için kullanacaksınız

ps resimlerdeki metin çok küçükse, sadece orijinal olanları yüklemek için resmin üzerine tıklayın.


Btw " Namir.78 " ne anlama geliyor?
Pacerier


0

Aynı sorunu çok uzun zaman önce bir şirkette de yaşadım. Gerçek bir "XML farklı" bulmak istiyorlardı ve orada tam bir çözüm yok gibi görünüyor.

En kolay çözüm, satır sonlarını ve aralıkları normalleştirmek için önce XML'de güzel yazdırılmış bir komut dosyası çalıştırmak ve daha sonra tercih edilen fark aracını çalıştırmaktır ( WinMerge pencereler için iyidir). Bu, çoğu difftools'un XML'den size atacağı flotsamın birçoğunu düşürür ve etrafta bir komut dosyası oluşturmak gerçekten kolaydır.


Sorun XML zaten olmasıdır edilir etkili hoş yazılı - bu satırları sarılır değişim eklemeleri ve silmeleri var. Başka bir satırın sonunda oluşan kelimelere dayanarak bir dosyayı yeniden biçimlendirmek için bir şeye ihtiyacım olup olmadığını merak ediyorum :(
Jon Skeet

0

SD Smart Differencer , belgeleri gerçek düzen yerine yapıyı temel alarak karşılaştırır .

Bir XML Akıllı Difüzör var. XML için bu, etiketlerin ve içeriğin eşleşen sırası anlamına gelir. Belirttiğiniz parçadaki metin dizesinin farklı olduğuna dikkat edilmelidir. (Şu anda boşlukun normalleştirilmesine karşı anlamlı olduğu metnin XML nosyonunu anlamıyor, ancak bunun size çok zarar vermeyeceğinden şüpheleniyorum).


0

@Jon Skeet: Sorunuzda farklı araçların görüntülendiğinde sarılmadığını belirttiniz.
vimdiff(Windows üzerinden de kullanılabilir gvim) görüntülenen xml dosyalarını ile sarmanızı sağlar :window set wrap. Referans bağlantısı .
Ayrıca :diffupdatediffs yenilemek için çalıştırabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.