2011-05-11 72 views
2

假設我有2個HTML源。我想比較這些,如果他們的差異超過給定的百分比值,我想用新的HTML做些什麼。
例如,如果2個HTML頁面相差5%或更多,我想給某人發電子郵件。 我怎樣才能在Java中做到這一點?有這樣的圖書館嗎?檢測HTML頁面之間的差異百分比

+1

你說什麼樣的差異? – 2011-05-11 14:45:48

+0

http://stackoverflow.com/questions/141993/best-way-to-compare-2-xml-documents-in-java可能會回答你的問題 – VirtualTroll 2011-05-11 14:46:24

+0

發佈的問題不回答這個問題,對不起。我正在談論HTML源代碼中的任何差異。例如,如果兩個網頁與頁面頂部的日期/時間不同,它應該返回類似0.1%的差異。 – 2011-05-11 17:22:06

回答

1

我們的Smart Differencer工具可能會對此有所幫助。

此工具進行比較的「代碼」(各種語言,HTML是一個)結構,併產生一個「差異」等輸出,但它的重點是代碼差異,而不是隻是原始文本的差異,使用特定語言(但有點有限)知識什麼是真的不同。所以,如果你換了標籤中的兩個屬性的位置,它會說沒有區別。

的diff的輸出告訴你什麼代碼塊已經被刪除,插入,移動複製完成根據語言結構的替代檢測。 (對於HTML,正常顯示的文本中的任何更改都被認爲是替代;它不會在這些文本字符串上做差異)。你必須掃描工具輸出以收集你的「整體變化」統計數據,所以這與cygwin diff的做法在概念上不同,但數字可能更精確。因人而異。

+0

感謝您的回答。我認爲我現在應該爲我的項目使用更復雜的工具。 (像基於塊的差異等工具)我會更多地關注你的項目,但無論如何,我選擇這個作爲答案,因爲這比其他答案更好。再次感謝。 – 2012-07-18 18:46:17

0

這樣做的廉價和骯髒的方法是通過HTML整理程序運行所有內容,刪除無關緊要的空格,然後在每個'<'字符前插入換行符。根據我的經驗,您可以通過標準的基於行的diff實用程序運行生成的文本,爲您提供一個「足夠好」的粗略差異度量。

+0

我不想做這樣的事情。像DaisyDiff(code.google.com/p/daisydiff)這樣的工具可以代表HTML中的差異。主要的實現是HTMLDiff,並且有很多Web跟蹤工具可以執行類似我想要的操作,但我正在尋找一個庫,而不是在另一個HTML中表示差異,只是告訴我它檢測到了多少變化。 – 2011-05-11 17:29:26

+0

鑑於我所描述的,「多少變化」是微不足道的 - 它是差異的行數除以原始行數。 – regularfry 2011-05-12 10:54:57

+0

解決方案的問題在於XML和HTML文檔是基於樹的文檔,而非基於行的文檔。所以我們必須比較節點(不是行)。 – 2011-05-12 20:10:51