原文:Learn about JavaFX's APIs for Reading RSS and Atom Newsfeeds
作者:Jeff Friesen
出处:http://today.java.net/article/2009/11/30/learn-about-javafxs-apis-reading-rss-and-atom-newsfeeds
JavaFX 1.2引入了许多有意思的API,其中包括了用于读取RSS和Atom新闻推送(newfeed)的API。如果你还未曾使用过这些API来的话,你将会发现它们大大地简化了把新闻推送阅读器整合到JavaFX应用中这一任务。
本文向你介绍了RSS和Atom的API,首先研究它们的共同基础,然后浏览每个API的关键类,最后,通过探讨FeedTask类对新闻推送轮询的实现来深入了解这些API是如何工作的。
共同的基础
RSS和Atom的API分别是以抽象类javafx.async.Task为根源的共同基础框架上的两个分支,该类使得启动、停止和跟踪运行在后台线程中的活动(任务)成为可能。
Task提供onStart和onDone变量来标识在任务启动和终止时被调用的函数,其他的变量则报告任务的进展情况和处置情况(成功或者失败),该类还提供了抽象的start():Void和stop():Void函数来启动和终止任务的执行。
抽象类javafx.data.feed.FeedTask扩展了Task,除了继承Task的变量之外,还重写了它的start()和stop()函数,FeedTask提供了以下的函数和变量:
poll(): Void:轮询新闻订阅的location以获得更新的内容,提取和解析内容,然后交付给应用。
update(): Void:轮询新闻订阅的location,提取和解析所有内容,然后交付给应用。
headers(类型为javafx.io.http.HttpHeader[])标识了一系列每次轮询新闻推送时发送给location的HTTP请求标头,该变量默认为null。
interval(类型为javafx.lang.Duration)指定了在再一次轮询新闻推送获得更新之前必须要间隔的时间长度,需要为该变量指明一个正数值,缺省值为0.0。(我不知道如果选择一个诸如60秒之类的正值作为轮询的默认值是不是会更好一些,也许可以用0.0来表明不需要轮询)
location(类型为String)指定了新闻推送的地址,该变量的缺省值为空串(””)。
onException(类型为function(:Exception):Void)标识了当前轮询期间发生异常时被调用的函数,该变量的缺省值为null。
onForeignEvent(类型为function(:javafx.data.pull.Event):Void)标识了被调用来处理扩展元素的函数,这些新闻推送元素的命名空间URI不是Atom或者RSS,例如,某个给定的Atom新闻推送的推送元素的开始标记是这样指定的<feed xmlns="http://www.w3.org/2005/Atom" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">,解析随后的<opensearch:totalResults>1911</opensearch:totalResults>元素得出三个陌生的项目(对应开始标记、文本内容和终止标记),因为totalResults的命名空间是http://a9.com/-/spec/opensearch/1.1/(以opensearch:前缀的方式指定)而不是http://www.w3.org/2005/Atom。该变量的缺省值为null。
共同基础框架也根植于抽象类javafx.data.feed.Base之上,这是描述了各种新闻推送元素的RSS和Atom类的基类,RSS的RSS和Atom的Feed这些顶层元素类是Base子类的例子。
Base提供了一个namespaces变量(类型为javafx.data.Pair[]),该变量包含了对元素有效的命名空间的定义,每个Pair的名称部分指明了命名空间前缀,值部分指定了命名空间URI。
Base还提供了一个parent变量(类型为Base),该变量用来表示父(把其包含之内的)元素,例如,Atom的Entry元素类的parent变量指向包含它的Feed实例,如果没有父元素(像Feed这种情况)的话,则该变量的值为null。
最后要说的是,Base提供了几个函数,在需要创建自定义的推送解析器的时候,它们会派上用场,因为这项工作超出了本文的范围,你可以参考Rakesh Menon的这篇博客文章Custom Feed Parsers以了解更多的内容和例子。
[译文]了解用于读取RSS和Atom新闻推送的JavaFX API(二)
分享到:
相关推荐
当前的JavaFX包括JavaFX脚本和JavaFX Mobile(一种运营于行动装置的操作系统),今后JavaFX将包括更多的产品。JavaFX Script编程语言(以下称为JavaFX)是一种declarative, statically typed(声明性的、静态类型)...
JavaFX api文档 chm格式
JavaFX API Documentation
用于JavaFX学习的帮助文档JavaFX api,
JAVA 8 官网API ,JavaFX 2.0 API官网 整合 生成CHM文件。
JavaFX 包含了一些列图形和媒体包,允许程序员设计、创建、测试、调试、和部署富客户端应用并且保持跨平台的操作一致性。 JavaFX 应用程序由 Java API 编写,可以调用任何 Java API 包。例如,可以调用 Java API ...
javafx8api文档
JavaFx api帮助文档
javafx2.2 API文档 英文文档 希望对你有所帮助
javafx的最新发布版本的最新API文档,包含目前新增所有包的信息!希望支持java!
javafx 2.2的 api,chm版本的,英文版的
JavaFX2 API chm文件
Javafx 2.0 正式版本的api手册,方便使用。
进行javafx开发时使用的api工具书。方便随时查询。
javaFxAPI(PDF版)根据官方资料制作
javafx-8_0_0-apidocs,该文档下载自官网,经本人制作而成方便使用的chm格式,我的更多下载资源:http://download.csdn.net/user/xubingtao。
最新JavaFX 2.2官方原版API documentation,解压缩后直接可以使用
javafx2.0的官方文档制作而成,包含索引
javafx api 帮助文档chm格式英文版 挑战英语迟早也得过这关