C# 更新xml数据库(如果更新)

C# 更新xml数据库(如果更新),c#,windows-phone-7,C#,Windows Phone 7,您好,我有一个应用程序,它读取7个小xml并存储结果,但从现在起,即使xml文件保持不变,它也会下载所有内容 我很想检查xml是否更新或是否已被修改,但我找不到解决方案,也许这是一个简单的解决方案,我正试图以更难的方式实现这一点 有人能帮忙吗 谢谢你的建议: 这是我的自动取款机代码: WebClient downloader = new WebClient(); downloader.DownloadStringAsync(new Uri("http://feeds.feedburner.com

您好,我有一个应用程序,它读取7个小xml并存储结果,但从现在起,即使xml文件保持不变,它也会下载所有内容

我很想检查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);
我试着用这种方式在xml的头中查找lastmodify或我可以使用的东西

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中发现一个空引用错误

也许您可以尝试使用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();
}

Tnx对于答案,我将尽快尝试此代码,并会让您知道它是否有效: