2009-10-13 23 views
5

İki xml dosyası arasındaki farkı görmenin en kolay yolu nedir?Ruby'de iki tane XML belgesi var mı?

Hpricot ve Nokogiri'ye baktım ama iyi bir karşılaştırma yöntemi bulamadım. Ayrıca, diffxml gibi unix araçlarına da baktım, ancak yakutta bir şey kullanmak istiyorum.

Herhangi bir fikri olan var mı?

+2

olduğunu söyleyebilirim. Bunun bir yinelenen soru olduğunu düşünmüyorum. Dağınık ağaçlar ve dağınık diziler farklı (olsa da) ilgili problemlerdir. – RecursivelyIronic

cevap

1

diff.rb nedir?
İki xml belgenizi dizilere dışa aktarır ve diferansiyeli bu kitaplığa sahip olursunuz.

+0

bağlantı artık çalışmıyor! –

0

O Elbette

require 'java' 
require '/usr/share/java/xmlunit.jar' 
java_import org.custommonkey.xmlunit.Diff 

puts Diff.new("<a></a>", "<a/>").similar 
puts Diff.new("<a/>", "<b/>").similar 

, bu yerine CRuby ait JRuby kullanmak zorunda anlamına herhangi bir yerel çözümden çok Java kütüphanesi XMLUnit kullanımı daha kolay olduğunu buldum, ama bu önemli bir engel değildi benim vaka.

0

Diğer bir seçenek yuvarlak xml-basit aracılığıyla açma ve ardından çıkış hatları üzerinde bir dizi diff yaparak xml düzene geçerli:

require 'rubygems' 
require 'xmlsimple' 
require 'diff' 

def regularize(xml) 
    XmlSimple.xml_out(XmlSimple.xml_in(xml)) 
end 

def diff_xml(a,b) 
    Diff.new(regularize(a).split("\n"), regularize(b).split("\n")) 
end 

puts diff_xml("<doc><a/></doc>", "<doc><a></a></doc>").diffs.empty? 
puts diff_xml("<doc><a/></doc>", "<doc><b/></doc>").diffs.empty? 
İlgili konular