新しいアイテムの検出は痛みですが、ハッシュが大いに役立ちます。個人的には、ファイル全体のハッシュを取得して、一致させるために保存する方が好きです。次に、各項目を押してinnerxmlをハッシュし、既にそれがあるかどうかを確認します。各項目をハッシュすると、GUIDが同じときに更新を管理するのに役立ちます。私はGUIDを使用しようとしましたが、それは痛みの価値がないだけです。ここでは、2.0より下の方が良い方法があるかどうかわからない.net 2.0の下でrssエンジンで使用したmd5関数です。
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時間に1回以上発生すると警告します。いくつかのフィードが数時間問題を抱えているのを見ましたが、後で修正されたコードの変更が原因です。
Googleもこのアプローチを採用しているようです。フィードがボルケージされている場合、実際に何度も実際に再試行する頻度がわからない場合は、修復されるまで試し続けます。< =日。その最新のアイテムが最終的に現れたかを見るためにGoogleの原子URLを使用して壊れていたフィードを見てそれを発見した。私は飼料が固定されていることに気が付いて数時間後になった。
ここでは、私はアイテムの外観についてgoogleをチェックするために使用したURLです。 http://www.google.com/reader/atom/feed/[feedurl]?n=20
RSSアプリケーションにはXmlDocumentを使用しないでください.XmlReaderまたはXmlPathDocumentを使用しないでください。 XmlPathDocument + navigatorは、コーディングしていない新しいノードを検出するのに適しています。
あなたは正しいと思います。私はちょうどコンテンツベースのアプローチで行く:ちょうど同じタイトルとテキスト(私は人々が頻繁に自分のフィードの項目を更新しないように願って...)がある投稿があったDBを見てください。おそらく私はハッシュ(文字以外のすべてを取り除く)の前に正規化を行うでしょう。 – usr