更新XML数据库是否有更新(Update xml database if newer)

2019-10-17 22:40发布

你好,我有这样的应用程序,阅读7小xml和存储结果,但因为现在它甚至下载的一切时,XML文件是不变。

我很想去检查,如果XML是新的或已被修改,但我不能找到一个解决办法,也许这是一个简单的,我想在困难的方式来实现这一目标

谁能帮助吗?

由于在咨询:)

这里是我的ATM代码:

WebClient downloader = new WebClient();
downloader.DownloadStringAsync(new Uri("http://feeds.feedburner.com/bluey/eventi20" + "?" + System.DateTime.Now.ToString(), UriKind.RelativeOrAbsolute));
downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(EventiDownloaded);

我试图寻找lastmodify,或者说我能以这种方式使用,在XML的头

WebClient downloader = new WebClient();
downloader.DownloadStringAsync(new Uri("http://feeds.feedburner.com/bluey/eventi20" + "?" + System.DateTime.Now.ToString(), UriKind.RelativeOrAbsolute));
downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(EventiDownloaded);
WebHeaderCollection myWebHeaderCollection = downloader.ResponseHeaders;
 foreach(var x in myWebHeaderCollection)
   for (int i = 0; i < myWebHeaderCollection.Count; i++)
      MessageBox.Show("\t" + myWebHeaderCollection.AllKeys.GetEnumerator() + " = " + myWebHeaderCollection.AllKeys.ElementAt(i));

但我得到了myWebHeaderCollection空引用错误

Answer 1:

也许你可以尝试使用ETag的http://en.wikipedia.org/wiki/HTTP_ETag

你可以只请求头(而不是全部内容),并抢的ETag和保存价值。 所以,你应该只做当完整的请求ETag的变化。 我没有亲自做。 我有同样的问题,因为你,但我的饲料每周更新一次,所以我做了一些变通的,不涉及此实现。

无论如何,这是一个快速的示例来演示头只请求你应该看到的ETag,您可以提取您的使用值。

static void Main(string[] args)
{
    WebRequest webRequest = HttpWebRequest.Create("http://www.forexfactory.com/ffcal_week_this.xml");

    // Only request the headers, not the whole content
    webRequest.Method = "HEAD";
    var response = webRequest.GetResponse();

    for (int i = 0; i < response.Headers.Count; i++)
    {
        Console.WriteLine(response.Headers.Keys[i] + " : " + response.Headers[i]);
    }

    Console.Read();
}


文章来源: Update xml database if newer