• 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

  • 相关阅读:
    C#微信开发文档
    XML相关操作
    css基本样式总结
    CSS选择器及其优先级
    Java学习之路(七)
    G2( bizCharts ) React 绘制混合图例
    G2 绘制混合图例 demo
    python 前后端分离 简单的数据库返回接口
    nginx 跨域
    react-router-dom
  • 原文地址:https://www.cnblogs.com/Areas/p/2193347.html
Copyright © 2020-2023  润新知