0

抱歉,如果这有点简单,但我对 C# 很陌生。在 WP7 应用程序中,我正在尝试使用 XDocument.Load() 方法将 XML 文件(特别是 Blogger 提要)加载到 XDocument 中。但是,当我尝试以下操作时:

XDocument data = XDocument.Load("http://destroyedordamaged.blogspot.com/feeds/posts/default");

我得到错误:

无法打开“http://destroyedordamaged.blogspot.com/feeds/posts/default”。Uri 参数必须是指向 Silverlight 应用程序 XAP 包内内容的相对路径。如果您需要从任意 Uri 加载内容,请参阅使用 WebClient/HttpWebRequest 加载 XML 内容的文档

所以我环顾四周,发现有人建议我这样做:

WebClient wc = new WebClient();
wc.OpenReadCompleted += wc_OpenReadCompleted;
wc.OpenReadAsync(new Uri("http://destroyedordamaged.blogspot.com/feeds/posts/default"));

和:

private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            Console.WriteLine("THERE IS AN ERROR: "+e.Error.Message);
            return;
        }
        using (Stream s = e.Result)
        {
            data = XDocument.Load(s);
        }
    } 

但这似乎也不起作用。它不会将任何内容加载到 XDocument 中。我在这里缺少什么吗?我想找出将 xml 从提要加载到 XDocument 的最简单方法。

我环顾四周,但似乎每个遇到此类问题的人都将他们的代码指向特定的 .xml 文件,而不是像我这样没有扩展名的 URL。

我很感激你能提供的任何意见。提前非常感谢。

4

2 回答 2

2

尝试使用DownloadStringAsync而不是OpenReadAsync

var webClient = new WebClient();
webClient.DownloadStringCompleted += RequestCompleted;
webClient.DownloadStringAsync(new Uri(SOURCE));

RequestCompleted代码:

    private void RequestCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            var feedXml = XDocument.Parse(e.Result);
            // (...)
        }
    }

我前段时间在我的应用程序中使用过它,所以我很确定它可以工作。

于 2012-04-22T16:49:16.903 回答
0

查看天气预报示例和 Windows Phone 代码示例。我使用这个示例来熟悉如何做这些事情。下载源代码并查看 Forecast.cs。

示例代码链接

于 2012-04-23T18:30:31.127 回答