什麼是最簡單的方法來查看使用兩個XML文件之間的區別?在Ruby中比較兩個XML文檔?
我看着Hpricot和Nokogiri,但找不到任何好的比較方法。我也研究過像diffxml這樣的unix工具,但寧願使用紅寶石。
有人有什麼想法嗎?
什麼是最簡單的方法來查看使用兩個XML文件之間的區別?在Ruby中比較兩個XML文檔?
我看着Hpricot和Nokogiri,但找不到任何好的比較方法。我也研究過像diffxml這樣的unix工具,但寧願使用紅寶石。
有人有什麼想法嗎?
我發現用起來比較方便的Java庫XMLUnit比任何原生解決方案
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
當然,這意味着你必須使用JRuby的,而不是CRuby,但這不是一個顯著的障礙我案件。
另一種選擇是由圓絆倒它通過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。它可以告訴你兩個XML文檔在語義上是否相同
我不認爲這是一個重複的問題。差異樹和差異序列是不同的(儘管抽象相關)問題。 – RecursivelyIronic