locked
请问大家 在封装 WebClient的DownloadStringCompleted事件后如何获取e.result结果? RRS feed

  • 问题

  • 请问大家 在封装 WebClient的DownloadStringCompleted事件后如何获取e.result结果?
    2012年5月9日 20:41

答案

  • 下面的例子中e.result为xml文件,可根据您需要的数据格式解析result。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;

    using System.Windows.Browser;//允许访问和操作浏览器的文档对象模型 (DOM)。
    using System.Xml;//命名空间为处理 XML 提供基于标准的支持。
    using System.IO;//System.IO 命名空间包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型。
    //添加引用,包含 LINQ to XML 的类。LINQ to XML 是内存中的 XML 编程接口,使您可以轻松有效地修改 XML 文档。
    using System.Xml.Linq;
    //提供与 Silverlight 图像处理相关的类型。
    using System.Windows.Media.Imaging;


    namespace webclient
    {
       
    public partial class MainPage : UserControl
        {
           
    public MainPage()
            {
                InitializeComponent();
                load_btn.Click
    += new RoutedEventHandler(load_btn_Click);
            }

           
    void load_btn_Click(object sender, RoutedEventArgs e)
            {
                Uri imageaddress
    =new Uri(HtmlPage.Document.DocumentUri,"imageurl.xml");
               
    //WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源
               
    //发送数据以及从这些资源接收数据的公共方法。
                WebClient client =new WebClient();
                client.DownloadStringAsync(imageaddress);
                client.DownloadStringCompleted
    +=new DownloadStringCompletedEventHandler(client_downloadstringcomplete);
            }

           
    void client_downloadstringcomplete(object sender,DownloadStringCompletedEventArgs e)
            {
                XmlReader reader
    = XmlReader.Create(new StringReader(e.Result));
                XDocument doc
    = XDocument.Load(reader);
               
    //使用Linq to xml读取xml文档
                List<Uri> imagesuri = (from image in doc.Descendants("image")//按文档顺序返回此文档或元素的子代元素集合。
                                       select new Uri(HtmlPage.Document.DocumentUri,
                                           image.Attribute(
    "Address").Value)).ToList();
               
    //添加图片对象
                foreach (Uri uri in imagesuri)
                {

                ......
                }
            }
        }
    }

    复制代码

    Xuesong Weibo http://weibo.com/highcedar

    2012年5月10日 0:35
    版主