2

我只是为 Intranet 创建一个简单的内部反馈 (RSS) 阅读器(使用 XML);我首先使用 ListView 并用 XmlTextReader 和 XmlDocument 填充它。

但是这个阅读器是没有用的,除非我引入了一个功能,以便在源 xml 文件更新后立即自动刷新阅读器。我能想到的一种方法是:

获取完整文件,然后比较 prev/new 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 回答