转载 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开发。
转载 Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件)),古老的榕树,5-wow.com
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。