使用RSS提要XML和显示信息

Jib*_*ibW 4 .net c# feed visual-studio windows-phone-7

我必须在我的Windows Phone 7应用程序中使用feed XML(RSS)并在a中显示这些信息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");
  }
Run Code Online (Sandbox Code Playgroud)

有人可以指导我如何继续获取XML信息并将其显示为ListBox项目吗?

Hei*_*cht 6

你必须做两件事:

  1. 从您拥有的URL下载Feed XML
  2. 解析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);
}
Run Code Online (Sandbox Code Playgroud)

为简洁起见,省略了大多数错误检查.关于维基百科所期望的XML元素的一些信息.下载XML文件的代码基于这篇关于使用的优秀博客文章HttpWebRequest.