用ROME读取OPML文件

本文介绍了OPML文件的基本概念及结构,展示了如何使用ROME工具包解析OPML文件,并探讨了RSS阅读器间的快速搬家功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 、 OPML 文件

OPML ( Outline Processor Markup Language )是建立在 XML 基础上的“大纲处理标记语言”,主要用于描述一份资料的结构。大部分的 RSS 阅读器都支持通过导入 OPML 文件来导入或导出订阅的源。

下面是一个 OPML 文件的样本

 

<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
    <head>
       <title> subscriptions in Google Reader</title>
    </head>
    <body>
        <outline text="豆瓣: 搞笑新闻收集小组的讨论" title="豆瓣: 搞笑新闻收集小组的讨论"
            type="rss"
            xmlUrl="http://www.douban.com/feed/group/funnynews/discussion" htmlUrl="http://www.douban.com/group/funnynews/discussion"/>
        <outline title="category1" text="category">
            <outline text="xxxxx" title="xxxxx" type="rss"
                xmlUrl="http://www.xxxxx.net/index.xml" htmlUrl="http://www.xxxxx.net/"/>
            <outline text="yyyyy" title="yyyyy" type="rss"
                xmlUrl="http://yyyyy.yyyyy.com/rss" htmlUrl="http://yyyyy.yyyyy.com"/>
        </outline>
    </body>
</opml>

2 、用 ROME 解悉 OPML 文件

ROME 有一个 opml 的扩展包,大致看了一下, jar 包里面有一个 rome.properties 文件和一些处理 OPML 格式文件的解悉和转换类。应该是通过 ROME 的插件机制,通过在 rome.properties 里面增加这些用来处理 OPML 格式的 Parser 和 Convertor 类,使 ROME 具备了解悉 OPML 的能力。使用时和用 ROME 读取 RSS 没有多在区别,如下:

WireFeedInput input = new WireFeedInput();
Opml feed = (Opml) input.build(source);//source可以是Reader,InputStream,和File等,
List<Outline> outlines = (List<Outline>) feed.getOutlines();


这样这可以通过 Outline 来取得 OPML 文件中每一条“ Rss 订阅”的地址和 title 等信息。同时要注意这里 Outline 既可以表示一条 Rss 订况,也可能表示一个 category, 如 <outline title="category1" text="category"> 这一条,这个其实就是在 Google Reader 中的 Folder 的概念。

可能过 outline.getChildren() 来取得 category 下面的每一个条目。



3、“快速搬家”

有些RSS阅读器提供了快速搬家,通过输入你在其它阅读器上的用户名和密码,就可以将以RSS订阅从其它网站上导入到这个阅读器上。在 java 中,用 HttpClient 通过将用户名和密码传递给其它阅读器网站模拟登陆,然后利用网站提供的导出OPML文件功能,再将这个OPML文件导入即可实现类似的快速搬家功能。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值