使用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;

所有的具体代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Documents;
  8. using System.Windows.Input;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Animation;
  11. using System.Windows.Shapes;
  12. using System.IO;
  13. using System.Xml;
  14. using System.Windows.Browser;
  15. namespace SLReadXML
  16. {
  17. public partial class MainPage : UserControl
  18. {
  19. public MainPage()
  20. {
  21. InitializeComponent();
  22. Uri uri = new Uri(GetURL() + "/Config.xml", UriKind.Absolute);
  23. WebClient Appclient = new WebClient();//使用WebClient下载config.xml文件,进行异步读取。
  24. Appclient.OpenReadAsync(uri);
  25. Appclient.OpenReadCompleted += new OpenReadCompletedEventHandler(Appclient_OpenReadCompleted);
  26. }
  27. void Appclient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
  28. {
  29. Stream stream = e.Result;
  30. using (XmlReader xReader = XmlReader.Create(stream))
  31. {
  32. xReader.ReadToFollowing("TestData");//使用XmlReader一直查找“TestData”元素读取该元素数据。
  33. string TestData = xReader.ReadElementContentAsString();
  34. MessageBox.Show(TestData);
  35. xReader.ReadToNextSibling("SecData");//使用ReadToNextSibling一直查找同级的“SecData”元素的数据,直到找到为止。
  36. string SecData = xReader.ReadElementContentAsString();
  37. MessageBox.Show(SecData);
  38. }
  39. }
  40. /// <summary>
  41. /// 获取当前SILVERLIGHT程序存放网络URL的前缀
  42. /// </summary>
  43. /// <returns>URL前缀</returns>
  44. public static string GetURL()
  45. {
  46. ScriptObject location = (HtmlPage.Window.GetProperty("location") as ScriptObject);
  47. object r = location.GetProperty("href");
  48. string URL = r.ToString().Substring(0, r.ToString().LastIndexOf('/')); //截取到当前SILVERLIGHT程序存放网络URL的前缀
  49. return URL;
  50. }
  51. }
  52. }

config.xml文件代码

  1. <configuration>
  2. <TestData>First Test Data</TestData>
  3. <SecData>Secend Test Data</SecData>
  4. </configuration>

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

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

本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/821207

Silverlig1.Silverlight读取外部XML加载配置-(使用WebClient读取XAP包同目录下的XML文件)...相关推荐

  1. Spring启动流程(原理)详解--结合web.xml加载配置分析 转

    https://blog.csdn.net/a1036645146/article/details/98617303

  2. web.xml加载详细过程(步骤)

    转载自:http://blog.csdn.net/believejava/article/details/43229361 这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢 ...

  3. springboot 读取配置文件_使用 @ConfigurationProperties 在 Spring Boot 中加载配置

    本文地址: 使用 @ConfigurationProperties 在 Spring Boot 中加载配置 使用 Spring Boot 加载配置文件的配置非常便利,我们只需要使用一些注解配置一下就能 ...

  4. SpringBoot打成jra包启动时读取外部配置文件实现动态配置

    场景 若依前后端分离版手把手教你本地搭建环境并运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 在上面 ...

  5. [logback] 关于logback.xml加载非类路径配置文件 - 问题排查与解决

    前言 之前我的所有配置文件放在Resource目录下,现在我想移到dc_server目录读取配置文件,然后就: 自定义配置文件读取的坑-- 探索 项目启动后发布加载不到根目录下的配置文件,一直报这种错 ...

  6. Java--web.xml加载过程;文件标签详解

    一.web.xml加载过程 我们在启动Javaweb项目时,首先需要启动一个容器(如Tomcat,JBoss) WEB加载web.xml过程如下: 1.在启动Web项目时,容器(如Tomcat,JBo ...

  7. log4j加载配置方式和配置详解

    log4j配置详解 log4j的配置文件有两种格式分别是xml和properties.本文只讲解properties格式.比较properties简洁易懂. log4j加载配置文件方式 大家在刚接触l ...

  8. java自定义上下文对象_Java框架_Spring应用上下文对象加载配置

    我们都知道IOC是spring框架的核心,主要作用是控制反转,把我们需要的对象从容器中提供给我们,但是IOC是如何加载我们所需要的对象的? Spring容器是IOC容器的一种,它通过Applicati ...

  9. hive外部表改为内部表_3000字揭秘Greenplum的外部数据加载——外部表

    外部表是greenplum的一种数据表,它与普通表不同的地方是:外部表是用来访问存储在greenplum数据库之外的数据.如普通表一样,可使用SQL对外部表进行查询和插入操作.外部表主要用于Green ...

  10. 大话PHP设计模式:类自动载入、PSR-0规范、链式操作、11种面向对象设计模式实现和使用、OOP的基本原则和自动加载配置...

    一.类自动载入 SPL函数 (standard php librarys) 类自动载入,尽管 __autoload() 函数也能自动加载类和接口,但更建议使用 spl_autoload_registe ...

最新文章

  1. __bridge 使用注意
  2. 江湖又现中科大少年班的传说
  3. android程序贴吧,【Android 教程总结贴】归纳所有android贴
  4. android studio gradle版本太低问题解决方案
  5. 一款插件如何让Github变得不一样?
  6. linux内核7大功能,Linux Kernel5.10十个值得关注的功能
  7. win8计算机安全模式,Win8如何进入安全模式
  8. 点读笔客户端_新手妈妈如何选购点读笔
  9. MIPS 已死,转身投靠 RISC-V!
  10. Security+ 学习笔记57 安全意识和培训
  11. java接口分几种类型_细数Java接口的概念、分类及与抽象类的区别
  12. 怎么制作升温曲线图_如何在EXcel做体温曲线图
  13. Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理
  14. YII2.0电商平台开发笔记
  15. openGauss亮相VLDB2020,展示内存优化研究成果
  16. 卷积神经网络流程图_AAAI 2020 | 北大:图卷积中的多阶段自监督学习算法
  17. hc sr501 c语言程序,HC-SR501人体红外感应模块资料汇总(原理图、常见问题、程序等)...
  18. 知云文献翻译 mac文献翻译软件
  19. 免费录屏软件有哪些?录屏软件下载,认准这3款软件
  20. linux文件无法写入

热门文章

  1. PTA6-1 鸡兔同笼问题 (20分)
  2. 检测图书ISBN编号校检位
  3. python小游戏————坦克大战
  4. 金山词霸取不了Adobe Reader的词?
  5. Win10下WinRAR“拒绝访问”解决+获取everyone权限
  6. 常见web中间件及其漏洞概述
  7. 怎么修改服务器玩家等级级上限,战神引擎服务端限制玩家最高等级教程
  8. 植物研究最新进展(2021年11月)
  9. openbsd_仔细看一下OpenBSD
  10. 可解释机器学习- LIME模型讲解|interpretable machine learning-LIME