Herhangi bir ücretsiz Xml Diff / Merge aracı var mı? [kapalı]


105

.Net uygulamalarımda, uygulama ayarları öğelerini vb. Birleştirmek istediğim birkaç yapılandırma dosyam var.

Bunu genellikle yaptığım gibi manuel olarak yapmaya başlamak üzereydim, ancak bir yerde bir XML diff GUI aracı olması gerektiğini düşündüm.

Araç, farklılıkları karşılaştırmak ve görüntülemek için öğe seviyesine gidebilir.

Ancak Google hiçbir önemli ücretsiz araç sonucu vermedi ve değerli hiçbir şey için ipucu vermedi.

Böyle bir araç mevcut mu? Bu çok kullanışlı mı? Bedava mı?

Şimdiden teşekkürler. :)

Düzenle:

Burada, hataya açık, sıkıcı manuel işimi 1 dakikalık daha basit bir göreve (ve otomatikleştirme potansiyeline) dönüştürecek işlevselliğin biraz açıklaması:

KDiff3'te, tüm dizinlerin bir fark / birleştirme işlemini yapabilirsiniz. Çok doğru, kullanıcı dostu ve net olan hiyerarşik bir fark vardır. Benzer bir çözüm bulmakla ilgileniyordum, ancak dizin hiyerarşisi yerine bir XML öğesi hiyerarşisi.

Böyle bir açık kaynaklı yazılım yoksa, bu işlevi sağlamak için CodePlex'te bir tane oluşturmayı düşünüyorum.

Yanıtlar:


11

KDiff3 XML'e özgü değildir, ancak ücretsizdir. Metin dosyalarını karşılaştırmak ve birleştirmek için iyi bir iş çıkarır.


3
Şu anda KDiff3'ü kullandığımı kabul ediyorum, ancak özellikle XML için öğe düzeyine inebilen bir araç harika olurdu.
Russell

2
Bu perspektiften düşünüyordum: KDiff'in dizinlerin hiyerarşik bir farkını yaptığı gibi, hiyerarşik bir öğe farklılığı da işe yarayabilir. Dolayısıyla, bir öğe değiştiyse, kabul ediyorum, ana öğelerin de değişmiş olarak işaretlenmesi gerekir.
Russell

25
herkes xml'de alt düğümlerin belirli bir sırada olmasının garanti edilmediğini fark eder, bu nedenle bir dosyadan diğerine bir şeyin aynı sırada olmadığını bildiren herhangi bir "araç" gerçekten xml uyumlu bir araç olmayacaktır

7
Sıra değişirse, öğeler farklıdır. Söz konusu XML belgesinin anlamına bağlı olarak, sıra önemli olabilir veya olmayabilir. Örneğin, XHTML'de sıranın önemli olduğu açıktır.
George Lund

7
Mesele şu ki, normal bir diff aracı çizgi tabanlı çalışıyor. Farklılaştığı formatı anlayan CSV dosyaları için özel fark araçları vardır. Anlamak ne kadar iyi olursa, farklılık o kadar etkili olabilir. İyi bir XML fark aracı, XML'i ayrıştırabilir, örneğin sıranın önemli olup olmadığı gibi kısıtlamaları belirlemek için bir şema kullanabilir ve sonra bu bilgiyi çok daha etkili bir fark / birleştirme deneyimi sağlamak için kullanabilir.
Stijn de Witt

32

WinMerge'i kullandığım Dosya karşılaştırma araçlarına bir göz atın . XML belgelerini karşılaştırma yeteneğine sahiptir ( ön filtreyi etkinleştirmek isteyebilirsiniz ).DisplayXMLFiles

DisplayXMLFiles.dll - Bu eklenti, sekmeler ve satır sonları ekleyerek XML dosyalarını güzel bir şekilde yazdırır. Bu, uygun yerlerde satır dönüşleri olmayan XML dosyaları için kullanışlıdır.

WinMerge iş başında

Ayrıca özellik karşılaştırma tabloma bakın .


6
+1 Winmerge sürüm 2.12.4.0; Menü "Eklenti" -> "Liste" -> "Eklentileri Etkinleştir" seçeneğini işaretleyin; "Eklenti" menüsü -> "Otomatik paket açma" seçeneğini işaretleyin. Dosya adı .xml olan XML dosyasıyla test edildi ve çalışıyor gibi görünüyor.
Alessandro Jacopson

10
Özniteliklerin farklı sıralarda olmasıyla iyi başa çıkmaz, bu nedenle, durumunuza bağlı olarak yararlılığı sınırlı olabilir.
Michael Kohne

Öğeleri ve öznitelikleri sıralamak için önce herhangi bir XML dosyasında bu dönüşümü kullanın: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid

1
Görünüşe göre eklenti artık mevcut değil.
Fernando Gonzalez Sanchez

O yükleyici olmadığına emin neden değilim ama bitbucket / kaynak kodu üzerine yaptıkları src repo (sourceforge DL) adresinden elde edebildi: bitbucket.org/winmerge/winmerge/src/...
aCodeMonkey

21

Özellikle XML dosyalarını karşılaştırma ve birleştirme sorununu çözen bir Windows uygulaması yazdım ve yayınladım.

Proje: Birleştir , herhangi bir XML dosyasının iki ve üç yollu karşılaştırmalarını ve birleştirmelerini gerçekleştirebilir (dosyalardan ikisinin ortak bir temel dosyanın bağımsız revizyonları olduğu kabul edilir). Diğer şeylerin yanı sıra, girdi dosyalarındaki öğeleri öznitelik değerlerine veya alt öğelerin içeriğine göre tanımlaması için ona talimat verebilirsiniz.

Komut satırı aracılığıyla tamamen kontrol edilebilir ve dosyalar arasındaki farkları içeren metin raporları da oluşturabilir.

Proje: Üç XML dosyasını birleştirerek birleştirme


Merhaba @James Bilgi için teşekkürler. Açıkçası, ücretsiz olsaydı güzel olurdu, ancak çok güzel işlevler sağlıyor - ve yukarıdaki örneğiniz, bu aracın neden soooo yararlı olduğu konusunda bir klasik! Gönderiniz için teşekkürler. :)
Russell

Project :: Merge'i denedim ve maalesef görevimle baş edemedi. Paragrafa kadar olan bölümde HTML metni (varsa <p>(gibi biçimlendirme ilave edilir) <i>, <em>). Yani Project :: Merge, tam para biriminin değiştirildiğini gösterir, derinlemesine kelime analizi yapmaz.
dma_k

Evet, özür dilerim ki, XHTML (eski HTML'yi asla yapmayacak) desteği, genel olarak XML blokları içinde metin farklılaşması gibi, bu açıdan oldukça sınırlı. Şimdiye kadarki çalışmaların çoğu, serbest biçimli karakter verilerinin kapsamı ve kullanımı açısından sınırlı olduğu yapılandırma stili XML dosyalarına odaklanmıştır. Umarım Project: Gelecekteki bir sürümde bu alanda birleştirin.

2
-1, OP özgür yazılım hakkında soru sordu. Project Merge deneme yazılımıdır ve 3 yıldır güncellenmemiştir.
yourbuddypal

3
Project: Merge artık Oso XML Merge ile değiştirildi: osocorporation.com/xmlmerge/index.php
leetNightshade


3

TortoiseSVN'de bulunan TortoiseMerge kullanıyorum programına

Ve bu konudaki File Diff araçlarından bahsettik, XML'e adanmamış

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


1
Teşekkürler S.Mark, epotter'da bahsettiğim gibi, genel dosya farkları için KDiff3'ü zaten kullanıyorum, ancak eğer mevcutsa gerçekten XML'e özgü bir diff yardımcı programını tercih ederim (yoksa, açık kaynaklı bir tane başlatacağım :))
Russell

>> (if not, I will start up an open-source one :)Vay canına, harika! dört gözle bekleyecek, başlarsa lütfen buradaki bir yere bağlantıyı bırakın.
SİZ

3

Bu bir GUI aracı olmasa da, hızlı testlerim diffxml'in bazı umutları olduğunu gösterdi . Yazar, standartlaştırılmış bir şekilde (DUL - Delta Güncelleme Dili belirtimi) yuvalanmış öğeler için farklılıkları temsil etmenin karmaşıklıklarını düşünmüş görünüyor.

Araçlarını kurup çalıştırırken ham metin çıktısının oldukça açık ve öz olduğunu söyleyebilirim. Bir GUI aracı ile aynı derecede anında kavrama sunmuyor, ancak çıktının DUL olarak standartlaştırıldığı göz önüne alındığında, belki bunu alıp görsel bir temsil oluşturmak için bir araç inşa edebilirsiniz. Kesinlikle bir tane görmeyi çok isterim.

Yazarın "bağlantılar" bölümü, diğer birkaç XML farklılaştırma aracına atıfta bulunuyor, ancak gönderinizde bahsettiğiniz gibi, bunların tümü tescillidir.


4
Benim deneyimim şudur: Öğelerin yeniden sıralanmasını hiçbir şekilde işleyemez; bu, bir XML aracında beklenen bir şeydir (bir seçenek olarak, çünkü bazen sıra önemlidir) ve minimum farklar yerine, tüm değişen öğeleri gösterir. . Temel olarak, büyük anlamsal değişiklikler olmadan büyük biçimlendirme değişiklikleri varsa, diff dosyası yalnızca tamamen yeni bir XML dosyasıdır.
SilverbackNet

3

Pretty Diff aracı XML düşünülerek oluşturuldu. "İşaretleme" seçeneğini tıkladığınızdan emin olun.

http://prettydiff.com/


Ama bu çevrimiçi bir araçtır, değil mi? Soldan sağa değişiklikleri nasıl uygulayabilirim veya nasıl birleştirebilirim?
dma_k

Ayrıca sıralama seçeneklerini de değiştirmeniz gerekir, aksi takdirde XML öğelerini tüm yaptıkları taşındığında değiştirilmiş olarak işaretler (XML'de sıralama önemli değildir, bu nedenle bu bir değişiklik olarak görünmemelidir). Yine de iç içe geçmiş bölümleri içeriklerine göre sıralamaz, bu nedenle tüm olan öğeler sırasının değişmesi olduğunda büyük XML bloklarının eklemelerini ve kaldırmalarını görmeye devam edeceksiniz, bu nedenle ayrıntılı bir fark elde etmek mümkün değildir.
Malvineous




0

CodeCompare aracını kullanmanızı tavsiye ederim . XML verilerinin yerel olarak vurgulanmasını destekler ve göreviniz için iyi bir çözüm olabilir.

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.