對兩個不同的html文檔進行差異變成了一個完全不同的問題,而不是簡單地對純文本進行差異化。例如,如果我之間做一個天真的LCS DIFF:有沒有在HTML文檔之間做差異的紅寶石?
Google</p>
和
Google</a></p>
的差異的結果並非如此:
</a>
但
/a></
我已經嘗試了大多數那些聲稱是html diff的gem,但它們都似乎只是實現基於文本的LCS diff。是否有任何gem在考慮html標籤時進行差異化?
對兩個不同的html文檔進行差異變成了一個完全不同的問題,而不是簡單地對純文本進行差異化。例如,如果我之間做一個天真的LCS DIFF:有沒有在HTML文檔之間做差異的紅寶石?
Google</p>
和
Google</a></p>
的差異的結果並非如此:
</a>
但
/a></
我已經嘗試了大多數那些聲稱是html diff的gem,但它們都似乎只是實現基於文本的LCS diff。是否有任何gem在考慮html標籤時進行差異化?
後的寶石爲我做這麼多的搜索,我發現,我可以簡單地做一個線二解析引入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匹配器會自動爲您提供不匹配行的逐行比較結果。
這兩個都只支持差異純文本和輸出HTML差異,不區分HTML和輸出HTML。 – Ruxton 2016-05-31 05:47:08
我不知道有什麼,但這並不意味着它們不存在。使用Nokogiri生成可比較的元素樹並執行基於樹的差異,創建這樣的寶石將會很有趣。嘗試在http://rubygems.org搜索官方寶石回購 – Phrogz 2012-02-01 17:44:49
可能重複[在Ruby中的Diff 2 XML文檔?](http://stackoverflow.com/questions/1558613/diff-two-xml-doc-in-紅寶石) – Phrogz 2012-02-01 17:52:44