新項目檢測是一種痛苦,但哈希可以幫助很多。我個人更喜歡爲整個文件獲得一個散列並將其存儲以進行匹配。然後,當你擊中每個項目散列innerxml並檢查,看看你是否已經擁有它。散列每個項目將幫助您在GUID相同時管理更新。我曾嘗試使用GUID,但它不值得痛苦。這裏是我在.net 2.0下的rss引擎中使用的md5函數,不確定是否有更好的方法在4.0下。
Imports System.Security.Cryptography
Function getMD5Hash(ByVal strToHash As String) As String
Dim md5Obj As New MD5CryptoServiceProvider
Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash)
bytesToHash = md5Obj.ComputeHash(bytesToHash)
Dim strResult As String = ""
For Each b As Byte In bytesToHash
strResult += b.ToString("x2")
Next
Return strResult
End Function
無法幫助畸形的提要,這只是解析RSS的事實。我已經將xml清潔程序看作桌面應用程序,但不是作爲庫。通常我會記錄一個分析錯誤,並在24小時內發送相同的錯誤提示。我已經看到許多Feed有幾個小時的問題,我相信由於後來修復的代碼更改。
谷歌似乎也採取這種方法。如果飼料是borked,他們會繼續嘗試,直到它被修復,不知道他們多久會重試>幾小時< =一天。通過觀看使用谷歌原子網站中斷的Feed,發現最新項目最終顯示的時間。我注意到飼料已經固定好幾個小時。
下面是我用來檢查谷歌項目外觀的網址。 http://www.google.com/reader/atom/feed/[feedurl]?n=20
不要在RSS應用中使用XmlDocument,請使用XmlReader或XmlPathDocument。 XmlPathDocument +導航器很適合檢測未編碼的新節點。
嗯,問題是,我必須閱讀的飼料不符合。這就像網絡上HTML符合的現狀。 – usr 2010-12-03 14:03:47
這很奇怪。你的意思是當你嘗試讀取XmlDocument時拋出?如果是這樣的話,任何人都不應該能夠閱讀它。 – 2010-12-03 14:12:25