【问题标题】:Consume RSS feed XML and display information使用 RSS 提要 XML 并显示信息
【发布时间】:2011-11-14 14:50:16
【问题描述】:

我必须在我的 Windows Phone 7 应用程序中使用一个提要 XML (RSS),并在 ListBox 中显示这些信息。

我尝试按照以下方式读取 XML 提要中的内容:

  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 项吗?

【问题讨论】:

    标签: c# .net visual-studio windows-phone-7 feed


    【解决方案1】:

    你必须做两件事:

    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);
    }
    

    为简洁起见,省略了大多数错误检查。 Wikipedia 提供了一些有关预期 XML 元素的信息。下载XML文件的代码基于this excellent blog post关于使用HttpWebRequest

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 2020-02-19
      • 2017-12-07
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      相关资源
      最近更新 更多