`
happmaoo
  • 浏览: 4505511 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明

阅读更多
<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:下载midletjad: 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年就已经通行天下了,最通常的是BlogRSS输出,当然许多其他类型的站点也都提供了本站内容的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:对记录进行排序》的代码,放弃了garreyRecordComparator比较器的实现。

另外,在调试过程中,也加入了我的一些思考,以及兼容各种RSS的办法。

总结一下特别之处。

特别是比原来Tommi 的版本增加了几个特性:

l 最大的改动就是,原来Tommi把视图/控制器都放在RssReaderMIDlet.java了,而我们将视图分拆出来为RssFeedAdd.javaRssFeedEdit.javaRssFeedList.java等等,控制器则为GUIController.java

l 可以添加/编辑/删除Rss Feed书签;

l 原来TommiFeed列表以及URL存储在RMS的一个条目,我放弃了这种做法,而是像garrey处理电话记录一样;

l 当请求远端服务器时,加入了动画等候画面,提示用户正在获取新闻列表;

l 由于采用了xmlpull方式解析XML,所以可以做到一边后台扫描XML文档,一边前台将解析到的新闻Title显示在用户界面上,不影响用户阅读新闻列表;

l 兼容博客堂/博客园这种.Text类型BlogRSS,因为它们限制请求方的“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

EnhydraKXML是一个被设计用于J2ME设备的只占很小存储空间的XML语法分析程序,虽然它也可以被用于其它需要小型XML语法分析程序的环境,比如AppletKXML支持以下特性:

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); // 设置nullKXmlParser自动检测该使用哪种编码

其次,我们需要跳过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

分享到:
评论

相关推荐

    J2ME RSS阅读器

    **J2ME RSS阅读器详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门设计用于资源有限的设备,如移动电话、PDA和其他嵌入式系统。RSS(Really Simple Syndication)是一种XML格式,常用于发布新闻提要...

    基于j2me的手机rss阅读器

    【基于J2ME的手机RSS阅读器】 J2ME,全称Java 2 Platform, Micro Edition,是Java平台的一个子集,专为嵌入式设备和移动设备开发应用程序。在这个项目中,我们讨论的是一个利用J2ME技术实现的手机RSS阅读器。RSS,...

    j2me_RSSreader.zip_阅读器

    **J2ME RSS阅读器详解** J2ME(Java 2 Platform, Micro Edition)是Java平台的一个子集,专门用于嵌入式设备和移动设备,如手机和智能手表。在这个项目中,我们关注的是一个由Jonathan Knudsen开发的J2ME RSS阅读器...

    基于J2ME的移动无线阅读系统的设计与实现

    ### 基于J2ME的移动无线阅读系统的设计与实现 #### 1. 引言 随着移动互联网技术的迅速发展,移动增值服务成为运营商关注的焦点。移动百宝箱作为中国移动推出的一项新业务,旨在为用户提供丰富的在线内容和服务。...

    J2ME 文本本件阅读器

    《J2ME文本文件阅读器》是一款专为手机设计的应用程序,基于Java Micro Edition(J2ME)平台开发。J2ME是Java的一个轻量级版本,主要用于嵌入式设备,如早期的智能手机和平板电脑。这款阅读器旨在帮助用户在移动设备...

    J2ME多媒体手机阅读器的设计实现与改进分析.pdf

    ### J2ME多媒体手机阅读器的设计实现与改进分析 #### 一、引言 随着无线移动通信技术的迅速发展以及各类移动业务的不断增长,几乎所有互联网上的服务都在移动通信系统中得到了广泛应用。然而,由于用户的特定需求...

    j2me项目 手机电子书阅读器源码

    通过分析和理解这个J2ME手机电子书阅读器的源码,初学者不仅能学习到J2ME的编程基础,还能掌握到移动设备上的资源管理和用户体验设计技巧。此外,这个项目还为后续的移动开发,例如Android或iOS的书籍阅读应用提供了...

    J2ME平台下文本阅读器的实现

    根据给定的信息,本文将详细探讨“J2ME平台下文本阅读器的实现”,包括其关键技术、实现步骤以及相关的背景信息。 ### J2ME平台下文本阅读器的实现 #### 引言 随着移动通信技术和互联网技术的快速发展,智能手机...

    基于J2ME的手机五子棋游戏的设计说明.doc

    基于J2ME的手机五子棋游戏的设计说明.doc

    电子图书阅读器J2ME源码

    j2me程序设计实例教程 ,3G开发,移动通信开发;介绍J2ME程序设计

    精通J2ME无线编程.pdf

    《精通J2ME无线编程》是一本专注于Java Micro Edition(J2ME)移动开发的专业...通过阅读这本书,读者不仅可以掌握J2ME的基本原理和技术,还能学习到如何创建功能丰富的无线应用程序,提升在移动开发领域的专业技能。

    J2ME平台的RSSReader

    总结来说,J2ME平台的RSSReader是一个综合运用了网络通信、XML解析、数据存储、用户界面设计以及多线程和错误处理技术的典型示例。它展示了如何在资源有限的环境中构建功能丰富的移动应用。通过深入理解这些技术,...

    课程设计 J2ME图书馆无线辅助管理系统.doc

    《J2ME图书馆无线辅助管理系统》是一份课程设计报告,主要介绍了如何利用J2ME技术构建一个图书馆无线辅助管理系统。该系统以手机客户端的形式存在,采用C/S架构,旨在利用3G无线网络进行文献查询和其他图书馆相关...

    j2me手机游戏地图编辑器

    j2me手机游戏地图编辑器便是这样一种工具,它专为创建手机游戏的地图而设计,简化了地图的设计过程,使开发者能够快速构建各种复杂的游戏环境。 地图编辑器的核心功能主要包括以下几点: 1. **图形化界面**:提供...

    J2ME无线设备程序设计-.rar

    在J2ME无线设备程序设计中,首先我们需要理解其核心组件。主要包括Profile(配置)和Micro Edition Feature Set(微型版特性集),例如MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device ...

    J2ME游戏课程设计

    **J2ME游戏课程设计详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门用于开发在移动设备、嵌入式系统等资源有限的环境中运行的应用程序,其中包括游戏。J2ME游戏课程设计是学习移动游戏开发的重要...

    JAVA基于J2ME的手机游戏开发(设计说明书+源代码).zip

    4. **游戏设计**:设计说明书会详细介绍游戏的玩法、规则、关卡设计,以及角色和界面的设定。可能还会包括游戏逻辑的伪代码或者流程图。 5. **编程实现**:讲解如何使用Java语言和J2ME API来实现游戏功能,如游戏...

    j2me 手机动画编辑器

    "手机游戏动画编辑器.exe"很可能是一个可执行文件,它是该J2ME动画编辑器的桌面版本,用户可以通过这个程序在个人电脑上设计和测试动画,然后将其导出为适合J2ME平台的格式。使用这样的工具,开发者可以先在PC上进行...

Global site tag (gtag.js) - Google Analytics