Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】

简介:

使用WebClient读取XAP包同目录下的XML文件

      我们想要读取XAP包下面的XML文件,需要将此XML文件放在加载XAP包的网页的目录中去,然后使用URI方式读取此URL方式下的XML文件。

      首先使用WebClient来异步下载此URL方式的XML文件,然后使用XmlReader来读取此XML文件的数据内容。

      在这里我们一共有3个知识点需要掌握:

      第一:获取当前调用此Silverlight程序XAP包的网页的地址的前缀,以获取XML文件的URL地址。
        public static string GetURL()
        {
            ScriptObject location = (HtmlPage.Window.GetProperty("location") as ScriptObject);
            object r = location.GetProperty("href");
            string URL = r.ToString().Substring(0, r.ToString().LastIndexOf('/')); //截取到当前SILVERLIGHT程序存放网络URL的前缀
            return URL;
        }
      第二:使用WebClient下载XML文件

         Uri uri = new Uri(GetURL() + "/Config.xml", UriKind.Absolute);
            WebClient Appclient = new WebClient();//使用WebClient下载config.xml文件,进行异步读取。
            Appclient.OpenReadAsync(uri);
            Appclient.OpenReadCompleted += new OpenReadCompletedEventHandler(Appclient_OpenReadCompleted);

      第三:使用XmlReader读取XML文件

            Stream stream = e.Result;
            using (XmlReader xReader = XmlReader.Create(stream))
            {
                xReader.ReadToFollowing("TestData");//使用XmlReader一直查找“TestData”元素读取该元素数据。
                string TestData = xReader.ReadElementContentAsString();
                MessageBox.Show(TestData);
                xReader.ReadToNextSibling("SecData");//使用ReadToNextSibling一直查找同级的“SecData”元素的数据,直到找到为止。
                string SecData = xReader.ReadElementContentAsString();
                MessageBox.Show(SecData);
            }

      需要引入的域名空间如下:

using System.IO;
using System.Xml;
using System.Windows.Browser;

      所有的具体代码如下:

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.IO;
using  System.Xml;
using  System.Windows.Browser;
 
namespace  SLReadXML
{
     public  partial  class  MainPage : UserControl
     {
         public  MainPage()
         {
             InitializeComponent();
 
             Uri uri = new  Uri(GetURL() + "/Config.xml" , UriKind.Absolute);
             WebClient Appclient = new  WebClient(); //使用WebClient下载config.xml文件,进行异步读取。
             Appclient.OpenReadAsync(uri);
             Appclient.OpenReadCompleted += new  OpenReadCompletedEventHandler(Appclient_OpenReadCompleted);
         }
         void  Appclient_OpenReadCompleted( object  sender, OpenReadCompletedEventArgs e)
         {
             Stream stream = e.Result;
             using  (XmlReader xReader = XmlReader.Create(stream))
             {
                 xReader.ReadToFollowing( "TestData" ); //使用XmlReader一直查找“TestData”元素读取该元素数据。
                 string  TestData = xReader.ReadElementContentAsString();
                 MessageBox.Show(TestData);
                 xReader.ReadToNextSibling( "SecData" ); //使用ReadToNextSibling一直查找同级的“SecData”元素的数据,直到找到为止。
                 string  SecData = xReader.ReadElementContentAsString();
                 MessageBox.Show(SecData);
             }
         }
         /// <summary>
         /// 获取当前SILVERLIGHT程序存放网络URL的前缀
         /// </summary>
         /// <returns>URL前缀</returns>
         public  static  string  GetURL()
         {
             ScriptObject location = (HtmlPage.Window.GetProperty( "location" ) as  ScriptObject);
             object  r = location.GetProperty( "href" );
             string  URL = r.ToString().Substring(0, r.ToString().LastIndexOf( '/' )); //截取到当前SILVERLIGHT程序存放网络URL的前缀
             return  URL;
         }
     }
}

Config.xml文件代码

<configuration>
	<TestData>First Test Data</TestData>
	<SecData>Secend Test Data</SecData>
</configuration>

本实例程序在Silverlight 4.0的开发环境,VS2010开发。

以下为源码:点击下载SLReadXML.rar



    本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/02/07/1949579.html,如需转载请自行联系原作者

相关文章
|
XML Java uml
spring 源码解析——第一篇(ioc xml方式)
spring 源码解析——第一篇(ioc xml方式)
231 0
|
XML Java Maven
第1次Spring源码学习之@Bean、@Configuration、xml、分析
第1次Spring源码学习之@Bean、@Configuration、xml、分析
219 0
|
XML Java 数据库连接
【spring源码系列-03】xml配置文件启动spring时refresh的前置工作
【spring源码系列-03】xml配置文件启动spring时refresh的前置工作
313 0
|
XML Java 应用服务中间件
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
这篇文章是关于Apache Tomcat服务器的目录结构、配置文件(特别是server.xml)的详细介绍和学习指南。
931 0
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
388 0
|
SQL JSON 数据处理
实时计算 Flink版产品使用问题之把hdfs集群里的core-site.xml hdfs.xml两个文件放到flink/conf/目录下,启动集群说找不到hdfs,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
XML Java 数据格式
Spring高手之路16——解析XML配置映射为BeanDefinition的源码
本文提供了深入Spring源码的透彻解析,从XML配置文件的加载开始,步入了Spring的内部世界。通过细致剖析setConfigLocations、refresh和loadBeanDefinitions等方法的实现,揭示了Bean从定义到注册的整个生命周期。
389 1
Spring高手之路16——解析XML配置映射为BeanDefinition的源码
|
XML Java 数据格式
Spring5源码(17)-Spring解析xml默认命名空间
Spring5源码(17)-Spring解析xml默认命名空间
215 0
|
XML JavaScript Java
Spring5源码(16)-Spring将Xml文件解析为Document对象
Spring5源码(16)-Spring将Xml文件解析为Document对象
302 0
|
SQL Java 数据库连接
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
743 0

热门文章

最新文章

相关课程

更多