<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
郑昀@ultrapower | 产品名称 | 产品版本 |
Keyword: RssReader RssFeed Channel j2me midp midlet kxml xmlpull RMS RssOwl java | RSS无线阅读器 | 0.7.1729 |
[J2ME][开源]RSSOwlMidlet
(RSS无线阅读器)
设计说明
我的RssReader资源:
1:《[J2ME]RSSOwlMidlet(RSS无线阅读器)开源说明》
2:《[J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明》
3:下载源代码:http://www.cnblogs.com/Files/zhengyun_ustc/RSSOwlMidlet-src.rar
4:下载midlet:jad: RSSOwlMidlet.jad jar: RSSOwlMidlet.jar (jar包可能有点偏大,您可以进行混淆来缩小)
摘要:
本文档给出RSS无线阅读器J2ME版本的设计思路和类说明。
第1章 简单描述RSS无线阅读器J2ME版本的背景、功能和特别之处。
第2章 描述调用RSS无线阅读器J2ME版本的设计思路。
第3章 给出了 RSS无线阅读器J2ME版本的设计过程中需要特别指出的问题。
第4章 给出了 各种下载资源。
1背景、功能和特别之处
摘要:本章 简单描述RSS无线阅读器J2ME版本的背景、功能和特别之处。
我们提供的RSS无线阅读器J2ME版本[开源]是一个可以下载到手机(例如Nokia7610)或者其他无线手持设备(例如PocketPC)的应用程序,用来阅读存在于Internet中广泛的RSS新闻源,比如
豆瓣最新评论 http://www.douban.com/feed/review/latest;
博客堂 http://blog.joycode.com/MainFeed.aspx;
博客园 http://www.cnblogs.com/rss.aspx;
CSDN技术文档 http://www.csdn.net/Rss/RssFeed.aspx?rssid=3;
ChinaUnix.net-业界新闻与评论 http://bbs.chinaunix.net/rss/46.xml;
keso's blog http://feeds.feedburner.com/PlayinWithIt
等等,这些新闻源我们将预置在本应用程序中。
下面介绍RSS无线阅读器的功能列表:
l RSS Feed列表
n 添加Rss Feed
n 编辑Rss Feed
n 删除Rss Feed
l 读取Rss Feed新闻
n 查看新闻摘要
l 重新读取Rss Feed新闻
l 关于我
1.1. RSS概念
这里简单介绍一下RSS,它并不是一个新概念,从大约2002年就已经通行天下了,最通常的是Blog的RSS输出,当然许多其他类型的站点也都提供了本站内容的RSS输出格式,比如:
论坛帖子,比如“ChinaUnix.net”;
新闻站点,比如“百度新闻”或者“Google新闻”;
门户,比如“新浪体育”,等等。
RSS其实就是特定格式的XML。所以在J2ME解决方案中,就是通过HttpConnection获取RSS XML文档并解析,将新闻条目显示在界面上,说起来很简单的。
下面,我们说说这个应用程序的特别之处。
1.2. 特别之处
这个应用程序的思路来自于两个开源的应用程序:
How to create a J2ME MIDP RSS Reader application with NetBeans 4.0 作者 Tommi Laukkanen
J2ME手机电话本 作者 garrey
RSS读取以及用xmlpull解析这部分思路,采用了Tommi 的思路;
MVC的类分解,以及对RMS记录存储的封装模式,采用了 garrey 的思路。
对于获取RMS中存储的所有的Rss Feed列表,采用了文章《探索J2ME:对记录进行排序》的代码,放弃了garrey的RecordComparator比较器的实现。
另外,在调试过程中,也加入了我的一些思考,以及兼容各种RSS的办法。
总结一下特别之处。
特别是比原来Tommi 的版本增加了几个特性:
l 最大的改动就是,原来Tommi把视图/控制器都放在RssReaderMIDlet.java了,而我们将视图分拆出来为RssFeedAdd.java、RssFeedEdit.java、RssFeedList.java等等,控制器则为GUIController.java;
l 可以添加/编辑/删除Rss Feed书签;
l 原来Tommi将Feed列表以及URL存储在RMS的一个条目,我放弃了这种做法,而是像garrey处理电话记录一样;
l 当请求远端服务器时,加入了动画等候画面,提示用户正在获取新闻列表;
l 由于采用了xmlpull方式解析XML,所以可以做到一边后台扫描XML文档,一边前台将解析到的新闻Title显示在用户界面上,不影响用户阅读新闻列表;
l 兼容博客堂/博客园这种.Text类型Blog的RSS,因为它们限制请求方的“User-Agent”;
l 采用KxmlParser的自动检测RSS XML文档的编码格式,所以不用用户专门设置编码格式。
2 设计思路
摘要:本章描述RSS无线阅读器J2ME版本的设计思路。
2.1. RSS XML读取及解析
关键三个包:
l javax.microedition.io. HttpConnection;
l org.kxml2.io. KXmlParser;
l org.xmlpull.v1.*。
HttpConnection:
下面来看看如何用HttpConnection类来请求远端的RSS服务器并获取RSS XML数据。
第一步是使用Connector类打开一个到服务器的连接,我们将把这个连接强制转换为需要的HttpConnection类型。
代码 |
HttpConnection hc = null; hc = (HttpConnection) Connector.open( url ); hc.setRequestMethod(HttpConnection.GET); |
接下来,我们得到HttpConnection上的一个InputStream,允许我们一个字符一个字符的读取服务器的响应数据。
代码 |
parseRssFeedXml( hc.openInputStream() ); public void parseRssFeedXml(InputStream is); |
org.kxml2.io. KxmlParser:
parseRssFeedXml函数就是负责用KXmlParser来解析这响应数据。
kxml2官方站点:http://kxml.sourceforge.net/。
下载kxml2代码:http://sourceforge.net/project/showfiles.php?group_id=9157&package_id=58653。
Enhydra的KXML是一个被设计用于J2ME设备的只占很小存储空间的XML语法分析程序,虽然它也可以被用于其它需要小型XML语法分析程序的环境,比如Applet。KXML支持以下特性:
1、支持XML名称空间;
2、用"松散"模式分析HTML或其它SGML格式;
3、占用很少的存储空间(21 kbps;
4、基于Pull的分析;
5、支持XML写操作;
6、可选的DOM支持;
7、可选的WAP支持。
KXML支持DOM语法分析和操作,但是不支持push语法分析。取而代之,它使用一种稍微不同的称为“Pull”的分析方法。与push语法分析相反,Pull语法分析让程序员从语法分析程序中“拉”出下一个事件。
Xmlpull官方站点:http://www.xmlpull.org/
优点:不必等整个文档解析完成,部分求值结果早就可以开始反馈给用户。
下面我们看看KXML如何做一个Pull语法分析程序。
首先我们需要创建了一个XmlParser,并把它传到一个InputStream中。
代码 |
public void parseRssFeedXml(InputStream is) throws IOException, XmlPullParserException { KXmlParser parser = new KXmlParser(); parser.setInput( is, null); // 设置null让KXmlParser自动检测该使用哪种编码 |
其次,我们需要跳过RSS根节点的“rss”之类的东西。
代码 |
parser.nextTag(); parser.require(parser.START_TAG, null, null); |
下面,我们来寻找RSS中的第一个“item”节点,它代表这个RSS文档中确实包含了新闻条目。这是通过下面的循环做到的。parser.next()的含义是“Get next parsing event”,这样就可以遍历文档,如果找不到item节点,就抛出一个异常。
代码 |
while(!"item".equals(parser.getName()) ){ /** Check if document doesn't include any item tags */ if( parser.next() == parser.END_DOCUMENT ) throw new IOException("No items in RSS feed!"); } |
确认有item节点后,我们来寻找RSS中代表每一个新闻的“item”节点下的三个节点“title”“link”“description”,这是通过下面的循环做到的。parser.next()的含义是“Call next() event if it is START_TAG or END_TAG otherwise throw an exception”,这样就可以遍历文档找全所有的新闻的主题、链接和摘要了。
代码 |
/** Parse <item> tags */<p></p></item> do { parser.require(parser.START_TAG, null, null); /** Initialize properties */ title = ""; description = ""; link = ""; /** One <item&g
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
**J2ME RSS阅读器详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门设计用于资源有限的设备,如移动电话、PDA和其他嵌入式系统。RSS(Really Simple Syndication)是一种XML格式,常用于发布新闻提要...
【基于J2ME的手机RSS阅读器】 J2ME,全称Java 2 Platform, Micro Edition,是Java平台的一个子集,专为嵌入式设备和移动设备开发应用程序。在这个项目中,我们讨论的是一个利用J2ME技术实现的手机RSS阅读器。RSS,...
**J2ME RSS阅读器详解** J2ME(Java 2 Platform, Micro Edition)是Java平台的一个子集,专门用于嵌入式设备和移动设备,如手机和智能手表。在这个项目中,我们关注的是一个由Jonathan Knudsen开发的J2ME RSS阅读器...
### 基于J2ME的移动无线阅读系统的设计与实现 #### 1. 引言 随着移动互联网技术的迅速发展,移动增值服务成为运营商关注的焦点。移动百宝箱作为中国移动推出的一项新业务,旨在为用户提供丰富的在线内容和服务。...
《J2ME文本文件阅读器》是一款专为手机设计的应用程序,基于Java Micro Edition(J2ME)平台开发。J2ME是Java的一个轻量级版本,主要用于嵌入式设备,如早期的智能手机和平板电脑。这款阅读器旨在帮助用户在移动设备...
### J2ME多媒体手机阅读器的设计实现与改进分析 #### 一、引言 随着无线移动通信技术的迅速发展以及各类移动业务的不断增长,几乎所有互联网上的服务都在移动通信系统中得到了广泛应用。然而,由于用户的特定需求...
通过分析和理解这个J2ME手机电子书阅读器的源码,初学者不仅能学习到J2ME的编程基础,还能掌握到移动设备上的资源管理和用户体验设计技巧。此外,这个项目还为后续的移动开发,例如Android或iOS的书籍阅读应用提供了...
根据给定的信息,本文将详细探讨“J2ME平台下文本阅读器的实现”,包括其关键技术、实现步骤以及相关的背景信息。 ### J2ME平台下文本阅读器的实现 #### 引言 随着移动通信技术和互联网技术的快速发展,智能手机...
基于J2ME的手机五子棋游戏的设计说明.doc
j2me程序设计实例教程 ,3G开发,移动通信开发;介绍J2ME程序设计
《精通J2ME无线编程》是一本专注于Java Micro Edition(J2ME)移动开发的专业...通过阅读这本书,读者不仅可以掌握J2ME的基本原理和技术,还能学习到如何创建功能丰富的无线应用程序,提升在移动开发领域的专业技能。
总结来说,J2ME平台的RSSReader是一个综合运用了网络通信、XML解析、数据存储、用户界面设计以及多线程和错误处理技术的典型示例。它展示了如何在资源有限的环境中构建功能丰富的移动应用。通过深入理解这些技术,...
《J2ME图书馆无线辅助管理系统》是一份课程设计报告,主要介绍了如何利用J2ME技术构建一个图书馆无线辅助管理系统。该系统以手机客户端的形式存在,采用C/S架构,旨在利用3G无线网络进行文献查询和其他图书馆相关...
j2me手机游戏地图编辑器便是这样一种工具,它专为创建手机游戏的地图而设计,简化了地图的设计过程,使开发者能够快速构建各种复杂的游戏环境。 地图编辑器的核心功能主要包括以下几点: 1. **图形化界面**:提供...
在J2ME无线设备程序设计中,首先我们需要理解其核心组件。主要包括Profile(配置)和Micro Edition Feature Set(微型版特性集),例如MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device ...
**J2ME游戏课程设计详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门用于开发在移动设备、嵌入式系统等资源有限的环境中运行的应用程序,其中包括游戏。J2ME游戏课程设计是学习移动游戏开发的重要...
4. **游戏设计**:设计说明书会详细介绍游戏的玩法、规则、关卡设计,以及角色和界面的设定。可能还会包括游戏逻辑的伪代码或者流程图。 5. **编程实现**:讲解如何使用Java语言和J2ME API来实现游戏功能,如游戏...
"手机游戏动画编辑器.exe"很可能是一个可执行文件,它是该J2ME动画编辑器的桌面版本,用户可以通过这个程序在个人电脑上设计和测试动画,然后将其导出为适合J2ME平台的格式。使用这样的工具,开发者可以先在PC上进行...