2

イントラネット用の単純な内部フィードバック (RSS) リーダー (XML を使用) を作成していました。私は ListView を使用することから始め、XmlTextReader と XmlDocument を設定しました。

しかし、ソース xml ファイルが更新されるとすぐにリーダーを自動更新する機能を導入しない限り、このリーダーは役に立ちません。私が考えることができる1つの方法は次のとおりです。

完全なファイルを取得してから、前/新しい ChildNodes の数を比較します。new > prev の場合、Winform をロード/リフレッシュします。しかし、これらの重要でない要求を送信する何百ものクライアント フォームは、ネットワーク サーバーの応答時間を冗談にします!

XMLファイルの作成/更新の日付と時刻を比較するには、何らかのロジックを使用する必要があると思います。しかし、私は今日までそのような機能を使用したことがありません...何か良いアイデアはありますか?

4

1 に答える 1

0

このファイルは次のように取得できます。

private string fetchRSS(string url, DateTime lastUpdate){
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.IfModifiedSince = lastUpdate;
    // if the file wasn't modified since the specified time it won't be fetched and an exception will be thrown
    try{
       WebResponse response = request.GetResponse();

       Stream stream = response.GetResponseStream();
       StreamReader reader = new StreamReader(stream);
       return reader.ReadToEnd();
    }
    // this will happen if the fetching of the file failed or the file wasn't updated
    return null;
}

次に、XML を解析する場合は、次のようにします。

DateTime lastUpdated = ... // here set the time of the last update
string xmlContent = fetchRSS("http://111.111.11.11/1.xml", lastUpdated);
if(xmlContent != null){
    rssDoc = new XmlDocument();
    // Load the XML content into a XmlDocument
    rssDoc.LoadXml(xmlContent);
}
于 2012-05-19T18:06:15.933 に答える