2010-12-03 10 views
0

私のアプリケーションは、私のコントロール下にない多くの公開RSSフィードを読んでいます。残念ながら私はさまざまな問題に直面しています(CDATAタグの中のXMLエンティティのように、リテラル文字、必須要素が欠落している必要があります...)。私は検出ルーチンを追加することでそれらのすべてを回避することができました。今私はguidを送信しているフィードを見つけましたが、常に同じ記事のguidが同じです!私は今、どのように新しいフィードアイテムを検出するのですか?新しいアイテム検出で.NETに必要なインターネット安全なRSS解析ライブラリ

これは私がインターネットセーフであることを意味します:私は不正なフィードから私を守るRSSライブラリが必要です。1500人のエンティティを持つフィードで動作します(これも見ています...)アイテム検出。誰でも.NETの推奨事項を共有できますか?

答えて

1

新しいアイテムの検出は痛みですが、ハッシュが大いに役立ちます。個人的には、ファイル全体のハッシュを取得して、一致させるために保存する方が好きです。次に、各項目を押して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は、コーディングしていない新しいノードを検出するのに適しています。

+0

あなたは正しいと思います。私はちょうどコンテンツベースのアプローチで行く:ちょうど同じタイトルとテキスト(私は人々が頻繁に自分のフィードの項目を更新しないように願って...)がある投稿があったDBを見てください。おそらく私はハッシュ(文字以外のすべてを取り除く)の前に正規化を行うでしょう。 – usr

0

RSSストリームはXMLでなければなりません。それ以外の場合は有効ではなく、おそらく標準のRSSリーダーによって破棄されます。

これらのフィードを.NET XmlDocumentまたはXmlReaderで読んでいますか?この場合、「回避する」必要はありません。

+0

問題は、私が読む必要のあるフィードが適合していないことです。これは、Web上のHTML準拠の現状と似ています。 – usr

+0

それは変です。 XmlDocumentを読み込もうとしたときにスローされますか?そうなら、誰もそれを読むことはできないはずです。 –

+0

この問題はめったにフィードでは起こりません。私はこれらの問題のすべてに加えてすべての問題を一度に解決することにもっと関心を持っています。いくつかは以前それをやったことを願って... – usr

関連する問題