我必须在 Windows Phone 7 应用程序中使用 feed XML (RSS) 并将这些信息显示在ListBox
.
我尝试按照以下方式读取 XML feed 中的内容:
private void button1_Click(object sender, RoutedEventArgs e)
{
client.DownloadStringAsync(new Uri("http://earthquake.usgs.gov/eqcenter/recenteqsww/catalogs/eqs7day-M2.5.xml"), "usgs");
}
有人可以指导我如何继续获取 XML 信息并将其显示为 ListBox 项目吗?
你必须做两件事:
- 从您拥有的 URL 下载 feed XML
- 解析 XML 并处理生成的 XML 文档
以下代码显示了如何执行此操作:
(GetFeed
做第1部分,handleFeed
做第2部分,button1_Click
是当用户单击按钮时启动提要下载的单击处理程序。)
// this method downloads the feed without blocking the UI;
// when finished it calls the given action
public void GetFeed(Action<string> doSomethingWithFeed)
{
HttpWebRequest request = HttpWebRequest.CreateHttp("http://earthquake.usgs.gov/eqcenter/recenteqsww/catalogs/eqs7day-M2.5.xml");
request.BeginGetResponse(
asyncCallback =>
{
string data = null;
using (WebResponse response = request.EndGetResponse(asyncCallback))
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
data = reader.ReadToEnd();
}
}
Deployment.Current.Dispatcher.BeginInvoke(() => doSomethingWithFeed(data));
}
, null);
}
// this method will be called by GetFeed once the feed has been downloaded
private void handleFeed(string feedString)
{
// build XML DOM from feed string
XDocument doc = XDocument.Parse(feedString);
// show title of feed in TextBlock
textBlock1.Text = doc.Element("rss").Element("channel").Element("title").Value;
// add each feed item to a ListBox
foreach (var item in doc.Descendants("item"))
{
listBox1.Items.Add(item.Element("title").Value);
}
// continue here...
}
// user clicks a button -> start feed download
private void button1_Click(object sender, RoutedEventArgs e)
{
GetFeed(handleFeed);
}
为了简洁起见,省略了大多数错误检查。有关预期 XML 元素的一些信息维基百科 https://en.wikipedia.org/wiki/RSS。下载XML文件的代码基于这篇优秀的博文 http://www.silverlightshow.net/items/Windows-Phone-7-Data-Access-Strategies-HttpWebRequest.aspx关于使用HttpWebRequest
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)