道歉,如果这有点简单,但我对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从feed加载到XDocument中的最简单方法。
我浏览了一下,但似乎每个遇到此类问题的人都将其代码指向特定的.xml文件而不是没有像我这样的扩展程序的网址。
我很感激您提供的任何输入。非常感谢。
答案 0 :(得分: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);
// (...)
}
}
前段时间我在我的应用程序中使用过它,所以我很确定它有效。
答案 1 :(得分:0)
查看Windows Phone代码示例的天气预报示例。我用这个样本来熟悉如何做这些事情。下载源代码并查看Forecast.cs。