ROME工具

摘要:使用ROME的解析器对读取一个Feed的操作是非常简单的,解析器可以从一个网址、一个本地文件或文件流中读取转换数据。将RSS子项列表信息以表格的形式显示出关键的几项,如标题、链接地址、标题简介。同时,ROME可以直接操作SyndFeed来构造Feed数据,实现从一个存在的Feed地址里读取解析到再输出生成一个Feed的过程。更多内容和使用方法,请参考ROME的官方资料:ROME,开发文档教程,API文档。 ROME是一个基于Java的开源程序包。ROME提供了一组Atom/RSS工具类,以使得用Java可以更方便和快捷的来操作大部分Syndication格式数据。 ROME包含了一组解析器和生成器,以使得在程序中不仅能够方便的解析各种格式的数据,也可以方便的生成出所指定格式的数据。ROME的解析器和生成器是配合使用的,解析器在解析完源数据之后,会生成一个ROME提供的中间对象(SyndFeed),这个对象包括了源数据中的所有信息,然后生成器以这个对象(SyndFeed)作为媒介,输出成程序所指定的数据格式。 使用ROME的解析器对读取一个Feed的操作是非常简单的,解析器可以从一个网址、一个本地文件或文件流中读取转换数据,使用的java语句如下: // 取链接地址 URL feedUrl = new URL("http://www.java.com/rss.xml"); // 取RSS资源 XmlReader reader = new XmlReader(feedUrl); // 到SyndFeedInput对象,即得到RSS源里的所有信息 SyndFeedInput input = new SyndFeedInput(); SyndFeed feed = input.build(reader); 此时,就把http://www.java.com/rss.xml 址的Feed数据转换成了ROME的对象SyndFeed。有了SyndFeed之后,RSS子项列表信息便可以轻易得到了,以表格的形式显示出关键的几项,如标题、链接地址、标题简介,使用的java语句如下: StringBuffer rssReader = new StringBuffer(); rssReader.append("

TitleURLDescription
"); // 得到Rss中子项列表 List entries = feed.getEntries(); // 循环得到每个子项信息 for (int i = 0; i < entries.size(); i++) { SyndEntry entry = (SyndEntry) entries.get(i); // 标题、连接地址、标题简介是一个Rss源项最基本的组成部分 rssReader.append("
"); rssReader.append(entry.getTitle()); rssReader.append("
"); rssReader.append("
"); rssReader.append(entry.getLink()); rssReader.append("
"); SyndContent description = entry.getDescription(); rssReader.append("
"); rssReader.append(description.getValue()); rssReader.append("
"); } rssReader.append("

"); System.out.println(rssReader.toString()); resultRSSreader = rssReader.toString(); 如果将这个SyndFeed重新转换生成为指定的Syndication格式数据,操作也是比较简单的,使用的Java代码: Writer writer = new FileWriter("./test.xml"); feed.setFeedType(feedType); // 设定feed输出的格式 SyndFeedOutput output = new SyndFeedOutput(); output.output(feed, writer); writer.close(); 以上是演示了如何从一个存在的Feed地址里读取解析到再输出生成一个Feed的过程。实际上,在ROME里,还可以直接操作SyndFeed来构造Feed数据,使用的Java代码: // 构造一个SyndFeed新对象 SyndFeed feed = new SyndFeedImpl(); // 设置Feed类型 feed.setFeedType(feedType); // 设置Feed基本信息 feed.setTitle("测试Feed"); feed.setLink("http://www.thedevlog.com"); feed.setDescription("测试使用ROME来构造Feed数据"); // 构造Feed items列表 List entries = new ArrayList(); SyndEntry entry; SyndContent description; // 构造一个新的节点并添加到列表中 entry = new SyndEntryImpl(); entry.setTitle("ROME v1.0"); entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); description = new SyndContentImpl(); description.setType("text/plain"); description.setValue("Initial release of ROME"); entry.setDescription(description); entries.add(entry); // 设置更多的节点... // 将节点列表赋给feed对象 feed.setEntries(entries); // 输出feed Writer writer = new FileWriter("./test.xml"); SyndFeedOutput output = new SyndFeedOutput(); output.output(feed, writer); writer.close(); 整个过程是十分简单的。除了上述功能外,通过ROME还可以将两个或多个Feed合并为一个Feed,将一个Feed拆分为多个Feed等。 更多内容和使用方法,请参考ROME的官方资料:ROME,开发文档教程,API文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值