2007-11
在Silverlight 1.1中,C#只能用XmlReader这样一个非常轻量级的东西来解析XML,因此稍有不慎就会出现很多非常奇怪的错误,在这里对XML的解析做一个简单的流程介绍吧。
在对流式XML的解析中,XmlReader对XML节点进行一些区分,这些节点的类型包括:
public enum XmlNodeType
{
None = 0,
Element = 1,
Attribute = 2,
Text = 3,
CDATA = 4,
EntityReference = 5,
Entity = 6,
ProcessingInstruction = 7,
Comment = 8,
Document = 9,
DocumentType = 10,
DocumentFragment = 11,
Notation = 12,
Whitespace = 13,
SignificantWhitespace = 14,
EndElement = 15,
EndEntity = 16,
XmlDeclaration = 17,
}
其中常用到的有Element、Attribite、Text、CDATA、EndElement等。其中Element类型的节点为“<item>”形式,EndElement的的节点为“</item>”形式,而Text类型则可以为一对标记之间的文本内容或者节点之间的空格、换行等......
本来以为Silverlight读XML那岂不是太方便了,没想到用Silverlight来读取XML中的节点原来是件非常令人痛苦的事情,尽管你用的是C#!因为Sivlerlight把WPF精简得太厉害,读XML只有XmlReader了……XmlReader是不支持XPath和XmlDocument的(这么好的东西都不要,莫非是因为Silverlight的体积问题?)
如果要用Silverlight读XML,建议看看这两篇文章:
1. Working with XML in Silverlight
有个建议,在读取每个节点的值之前最好先判断一下节点的类型(NodeType),否则很有可能出现一些不可解释的“灵异”现象……

这个是上个学期开学用Flash完成的,因为还有很多想法没有实现,用起来也十分不便,所以一直没有拿出来,现在趁提供天气预报RSS的机会顺便拿出来。目前可以提供全国范围内将近300个城市未来72小时的天气信息,数据来自新浪天气(与中央气象台同步)。这个还要新增的功能有:
1、定制城市。这个最重要,否则每次都要自己选,太不方便了。
2、使用缓存数据。这个也很重要,提高查询速度的关键。
3、快速搜索。这个也是为了方便。
下载地址:http://fdream.ys168.com,在Tool目录下,fwr.rar即是。
今弄了一下午,才搞定天气预报的RSS,暂时只能提供全国范围内34个省会城市的72小时的天气预报信息。数据更新方式为固定时间段更新加不定期更新...
做课程设计的时候发现网上的资源挺丰富的,怎么我找个ATOM的规范都找不到(不能上国外网就是这么郁闷)!不得已再借兄弟的宽带用一会儿,找到了英文原版的ATOM规范。结合这个规范和网上现有的ATOM FEED自己也给blog写了一个ATOM FEED。
在网上好不容易找到几篇有提到ATOM的文章都说ATOM比RSS复杂,不过如果你不熟悉RSS可能会觉得两者都比较复杂,不过ATOM确实比RSS灵活一点。其他标签都好说,郁闷的是两者的时间格式不一样,RSS要求时间是RFC 822格式的:
Sat, 07 Sep 2002 00:00:01 GMT
而ATOM的时间格式很奇怪(采用RFC3339标准),一般是这样的:
2005-07-10T12:29:29Z
中间必须要夹杂一个很奇怪的大写T字母(应该是很奇怪的夹杂着一个大写T字母),根据规范中的说明是用来分隔日期(date)和时间(time)的,而末尾的大写字母Z是用来表示时区(Time Zone),如果时区不是用数字表示的,就用大写的Z,以下几种格式都是合法的:
这个学期前期写的一段代码,本来是想自己做一个XNA(XML聚合)的,由于种种原因,做了一部分就终止了,这是其中处理XML文档的一部分。
'xml加载,其中 linkurl 为表示 XML 文档的 URL 的变量
Set http=Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET",linkurl,False
http.send
Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.Async=False
xmlDoc.ValidateOnParse=False
xmlDoc.Load(http.ResponseXML)
'xml结点设置
set root = xmlDoc.documentElement
'根据结点选取数据,兼容XML 1.0规范和 XML 2.0规范
set nodeLis = root.getElementsByTagName("item")
'对于XML文件中时间标签不同的兼容处理

简直是不可思议,微软竟然使用XML格式存储文件,这不就等于公开 OFFICE 的文件结构吗?前几天还看到金山的 WPS Office 2005 发布的好消息,全面模仿 Office ,并且全面兼容 Office 文件格式,可以相互读取,偶还为其狠很的高兴了几天,看来 WPS 的“全面兼容”的概念是彻底的死了!强者就是强者,随便一出手便能使对手受到致命伤害!
因为网费欠缺,断网了两天,又由于课比较多,两天没去交网费,在寝室里上不了网,就只好让 MM(Macromedia) 陪我玩了,在这段时间内,用"三剑客"做了一个 Flash留言本的雏形!
数据存储使用 Access, 脚本使用的是 ASP,动态生成 XML,然后由 Flash 来解析 XML,不过程序现在还有很多BUG, 只有慢慢修改了!
在这个flash里用的比较重要的命令是:
myXML.load();
loadVariablesNum();
tellTarget();
mc.attachMovie();
loadmovie();
mc.removeMovie();
mc.onRollOver();
mc.onRollOut();
mc.onRelease();
基本界面如下:
从偶的blog的rss读取数据,顺便练习了一下Flist组件,一直不太喜欢用组件的,呵呵~
rss代码(由asp生成)地址:blogrss2.asp
fla代码:
myList.setSize(350, 240);
myList.rowHeight = 24;
var myXML = new XML();
myXML.load("blogrss2.asp");
myXML.ignoreWhite = true;
myXML.onLoad = function(success) {
if (success) {
for (i=7; i<17; i++) {
myList.addItem({label:myXML.childNodes[0].childNodes[0].childNodes.childNodes[1].firstChild.nodeValue});
}
}
};
listenerObject = new Object();
……
Processed in 2.3127072 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
2007-8
2006-1
2005-9
2005-6
用户中心
日志分类

最新日志
最新评论
统计信息






友情链接