2009-10-13 5 views
5

2つのxmlファイルの違いを確認する最も簡単な方法は何ですか?Rubyの2つのXML文書を比較しますか?

私はHpricotとNokogiriを調べましたが、良い比較方法は見つかりませんでした。私はまた、diffxmlのようなUNIXツールを調べましたが、むしろルビーで何かを使用したいと思います。

誰もがアイデアを持っていますか?

+2

これは重複した質問ではありません。 DiffingツリーとDiffingシーケンスは、(抽象的には関係はありますが)異なる問題です。 – RecursivelyIronic

答えて

1

何についてdiff.rb
2つのXML文書を配列にエクスポートし、そのライブラリでdiffを取得します。

+0

リンクはもう機能していません! –

0

私はもちろん

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 

が、これはあなたの代わりにCRubyのJRubyのを使用しなければならないことを意味任意のネイティブソリューションよりもJavaライブラリXMLUnitを使用する方が簡単だったが、それはで大きな障害ではなかった私場合。

0

別のオプションは、XML-シンプルを通してそれをトリップして、出力の行に配列差分を取るラウンドして、XMLを定例化することである。

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? 
1

equivalent-xml gemを試してみてください。 2つのXML文書が意味的に同等であるかどうかを知ることができます

関連する問題