是否有一个RubyGem可以区分HTML文档?

是否有一个RubyGem可以区分HTML文档?,ruby,version-control,rubygems,merge,diff,Ruby,Version Control,Rubygems,Merge,Diff,对两个不同的html文档进行差异化处理与简单地对纯文本进行差异化处理是完全不同的问题。例如,如果我在以下各项之间进行简单的LCS差异: Google</p> Google 及 Google 差异结果不是: </a> 但是 /a>在为我搜索了很多gem之后,我发现我可以在两个解析过的Nokogiri文档之间进行字符串比较: def should_match_html(html_text1, html_text2) dom1 = Nokogiri::HTML

对两个不同的html文档进行差异化处理与简单地对纯文本进行差异化处理是完全不同的问题。例如,如果我在以下各项之间进行简单的LCS差异:

Google</p>
Google

Google


差异结果不是:

</a>

但是


/a>在为我搜索了很多gem之后,我发现我可以在两个解析过的Nokogiri文档之间进行字符串比较:

def should_match_html(html_text1, html_text2)
  dom1 = Nokogiri::HTML(html_text1)
  dom2 = Nokogiri::HTML(html_text2)
  dom1.to_s.should == dom2.to_s
end
然后,您可以简单地将其添加到规范中:

should_match_html expected_html, actual_html

最好的一点是,内置的rspec匹配器将自动为您提供不匹配行的逐行差异结果。

尝试或

我不知道,但这并不意味着它们不存在。创建这样一个gem会很有趣,使用Nokogiri生成可比较的元素树并进行基于树的区分。尝试在官方gem repo中搜索可能的副本,这两个副本都只支持区分纯文本和输出HTML区分,不区分HTML和输出HTML。@ruxton你找到你要找的东西了吗?@Richardsondx我不记得是什么,但我记得这是我工作的系统中最烦人的部分。@ruxton不再是真的,
Diffy
可以很好地处理HTML!
def should_match_html(html_text1, html_text2)
  dom1 = Nokogiri::HTML(html_text1)
  dom2 = Nokogiri::HTML(html_text2)
  dom1.to_s.should == dom2.to_s
end
should_match_html expected_html, actual_html