K_Reverter的网页开发记录

要么不做,要么就当作艺术品来做!

导航

闭关纪要20.在Google App Engine之中解析RSS

        从上一篇闭关纪要文章闭关纪要19.Google Datastore API的疑似BUG?之后,因为这个BUG,至今没有得到解决,因此,我暂时停止了需要大批量向Google Datastore传递大量数据的程序的研究,不过还是继续在进行GAE相关的研究,特别是,我在发现我在万网申请的虚拟主机在铁通居然上不了,心中很郁闷,因此更加倾向于将我的网站的更多功能转移到GAE上了。

        我原先以为下载和解析XML是一个很广泛的使用,在GAE上肯定使用起来很容易的,可是我慢慢发现,没有这么容易,Google App Engine居然在这个过程上BUG不少,我花了好久终于找到了一个能够完成XML下载和运行的方案。

        我根据网上大家的讨论,使用过ElementTree,和SimpleXMLTreeBuilder,最终都出现这样或那样的BUG,例如"illegal character in content",还有几个error,我没有具体的error内容是什么了,而且在处理包含中文的XML的时候,又会出现更复杂的问题,因此,我专门的介绍一下我成功实现的一个RSS文件读取功能,希望对也要实现同样功能的用户有所帮助。

        我最后采用的XML解析类是minidom,从名字看起来,是一个很简单的XML解析,简单与否我倒是不在意,只要能解析就行,要不然我就必须要通过正则表达式自己去匹配内容,可就累得多了。

        我的简单实现代码如下(我这个是一个随机取一个笑话返回的REST程序,运行结果如下:http://service.dituren.cn/services/joke_random?id=30&c=onJokeLoaded,在客户端请求的时候,随机的使用一个id,服务端会自动下载一个RSS之中的内容,并将相应的结果返回。

 

joke_random.py

 

        从以上的代码,就实现了一个这样的过程,客户端请求一个指定编号的笑话条目的时候,服务端请求一个rss文件,并且返回指定编号的条目,并将内容保存到数据库之中,以便下次查询的时候不再需要下载。

        我的程序最终目的是能够在客户端实现显示一个随机的笑话,效果可以从http://www.dituren.cn/  上面看到,每次地图加载完成之前,在地图显示区域先显示一个随机的笑话,因为是随机的,所以不会每次显示同一个笑话,而且因为有一定的缓存技术,加载速度比较快,可以用来在用户等待地图加载的时候看个笑话消遣用。

posted on 2009-01-02 13:09  K_Reverter  阅读(1011)  评论(3编辑  收藏  举报