周锋:Silverlight读取外部XML加载配置--(使用WebClient读取XAP包同目录下的XML文件)

来源:百度文库 编辑:偶看新闻 时间:2024/03/29 14:59:47
使用WebClient读取XAP包同目录下的XML文件我们想要读取XAP包下面的XML文件,需要将此XML文件放在加载XAP包的网页的目录中去,然后使用URI方式读取此URL方式下的XML文件。首先使用WebClient来异步下载此URL方式的XML文件,然后使用XmlReader来读取此XML文件的数据内容。在这里我们一共有3个知识点需要掌握: 第一:获取
使用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);
}
}
/// 
/// 获取当前SILVERLIGHT程序存放网络URL的前缀
/// 

/// 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;
}
}
}
Config.xml文件代码

First Test Data
Secend Test Data

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