zoukankan      html  css  js  c++  java
  • 转载 Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))

    转载:程兴亮文章,地址;http://www.cnblogs.com/chengxingliang/archive/2011/02/07/1949579.html 

    使用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开发。

  • 相关阅读:
    Lodop简短问答客户反馈篇 及排查步骤 及注册相关
    Win10图片打不开文件系统错误2147416359解决方法
    Lodop中特殊符号¥打印设计和预览不同
    LODOP安装参数 及静默安装
    LODOP打印安装到win的特殊字体
    Lodop打印设计(PRINT_DESIGN)介绍
    Lodop打印设计里的 打印项对齐
    System.out.println与System.err.println的区别(输出顺序!!!)
    享元模式
    Java中关于HashMap的元素遍历的顺序问题
  • 原文地址:https://www.cnblogs.com/xuxin-1989/p/3592043.html
Copyright © 2011-2022 走看看