zoukankan      html  css  js  c++  java
  • 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

    =================================================================

    public static string GetURL() {
    Uri uri = Application.Current.Host.Source;
    string url = uri.AbsoluteUri.Replace(uri.AbsolutePath, string.Empty);
    return url;
    }
    我取地址用的这个方式,原因是如果我的TestPage.html页面是Page/TestPage.html下,config.xml在config/config.xml下,用LastIndexOf可能取不到,呵呵!
    当然我这方法也不是最好的,应该还有更好的办法,只是我现在想不出来
  • 相关阅读:
    订单模块
    69.Sqrt(x)
    28.Implement strStr()---kmp
    26.Remove Duplicates from Sorted Array
    27.Remove Element---两指针
    支付模块
    Oracle维护:每天的工作
    Oracle Hint
    latch相关视图整理
    oracle常用视图介绍
  • 原文地址:https://www.cnblogs.com/meimao5211/p/3449869.html
Copyright © 2011-2022 走看看