2つのxmlファイルの違いを確認する最も簡単な方法は何ですか?Rubyの2つのXML文書を比較しますか?
私はHpricotとNokogiriを調べましたが、良い比較方法は見つかりませんでした。私はまた、diffxmlのようなUNIXツールを調べましたが、むしろルビーで何かを使用したいと思います。
誰もがアイデアを持っていますか?
2つのxmlファイルの違いを確認する最も簡単な方法は何ですか?Rubyの2つのXML文書を比較しますか?
私はHpricotとNokogiriを調べましたが、良い比較方法は見つかりませんでした。私はまた、diffxmlのようなUNIXツールを調べましたが、むしろルビーで何かを使用したいと思います。
誰もがアイデアを持っていますか?
私はもちろん
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を使用する方が簡単だったが、それはで大きな障害ではなかった私場合。
別のオプションは、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?
equivalent-xml gemを試してみてください。 2つのXML文書が意味的に同等であるかどうかを知ることができます
これは重複した質問ではありません。 DiffingツリーとDiffingシーケンスは、(抽象的には関係はありますが)異なる問題です。 – RecursivelyIronic