前一阵子试着写个Silverlight应用,其中需要读取xml作为数据文件,但是由于xml里的数据随时都需要外部更改,于是乎不方便放在xap里,免得违背了"一次OX,处处运行"这种某伪OO语言所兴起的风潮,直接放在ClIEntBin下,于是开了各种尝试.
首先,很自然,看了msdn,直接选用XmlReader.Create(string uri)来创建reader,可惜...杯具,这里的uri是直接指向xap下的.(M$,你敢给个XmlReader.Create(URI uri)的overload么)
说到URI,SL里如果相对地址为"Image/1.jpg",先查看是否在ClIEntBin/Image下有1.jpg.然后再在xap下找,而如果"~Image/1.jpg",那就直接找xap下是否有...
然后.各种找攻略,期间发现各种水文(国内各种论坛果然是鱼龙混杂,虽卧虎藏龙,但是还是有神一般存在的家伙的-_-,ps:咱是水货),包括使用Xmldocument的杯具男,我说你们写上去之前能跑一下代码,或者好好看以下msdn吗,上面清楚写着,Xmldocument不可用阿....
好吧,Silverlight对WPF的瘦身不是一点,茫茫多的功能被阉割掉了,原本很强大的xml支持,现在只剩那么几个鸡肋一般的了.害咱解析的类写了好久T_T
SL酱小一点真的好么?一只手握住刚好,还是贫R是稀缺资源呢?M$不能这么邪恶啊...
进入正题...水了好久啊...
这边提供这么个类 XMLParse:
from http://forums.silverlight.net/forums/t/99312.aspx
public class XMLParser
{
public delegate voID EventHandler(object sender,XmlParserEventArgs e);
public event EventHandler Completed;
public voID LoadXML@R_502_6852@(string xmlURI)
{
WebClIEnt xmlClIEnt = new WebClIEnt();
xmlClIEnt.DownloadStringCompleted += new DownloadStringCompletedEventHandler(XML@R_502_6852@Loaded);
xmlClIEnt.DownloadStringAsync(new Uri(xmlURI,UriKind.relativeOrabsolute));
}
voID XML@R_502_6852@Loaded(object sender,DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
string xmlData = e.Result;
if (Completed != null)
{
Completed(this,new XmlParserEventArgs(xmlData));
}
}
}
}
public class XmlParserEventArgs : EventArgs
{
public string XmlString { get; set; }
public XmlParserEventArgs(string xmlString)
{
this.XmlString = xmlString;
}
}
用WebClIEnt+异步传输,貌似可以获取其它网站的数据,很不错的方法.虽然还有修改的方法,嘛,有空再看了.使用范式就在那个link里找吧...
=========================人,人家才不是什么分割线呢=============================
【reprinted from http://hi.baidu.com/avalontm/blog/item/bae82d3cbbe006cd9e3d6279.html】
总结以上是内存溢出为你收集整理的Silverlight中调用ClientBin下非xap内的xml的方法全部内容,希望文章能够帮你解决Silverlight中调用ClientBin下非xap内的xml的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)