`
niedhui
  • 浏览: 12206 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用ROME读取OPML文件

阅读更多

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文件导入即可实现类似的快速搬家功能。

 

 

分享到:
评论

相关推荐

    rome-opml-1.5.0.zip

    rome-certiorem.zip,基于罗马(过时)的JavaBuHuBub实现到HTTPS://Github. COM/ROMITOOLS/ROME

    java使用Rome解析Rss的实例

    在这个方法中,我们使用`XmlReader`从URL获取RSS XML内容,然后用`SyndFeedInput`构建了一个`SyndFeed`对象,该对象包含了RSS feed的所有信息,如标题、描述、条目等。 有了`SyndFeed`对象,我们可以方便地访问RSS ...

    jdom和rome1.0包

    使用JDOM,开发者可以方便地读取XML文件,查找、修改或添加元素,以及生成新的XML输出。JDOM的设计目标是提高性能和易用性,使得Java开发者在处理XML时无需了解复杂的底层细节。 ROME,全称RSS Object Model for ...

    rome-1.0.jar rome.jar 源码

    1. **导入源码**:首先,将"ROME1.0"压缩包解压,获取到"rome-1.0.jar"的源码文件,可以使用IDE如Eclipse或IntelliJ IDEA导入源码项目。 2. **了解包结构**:查看源码中的包组织,如`com.rometools`下的各个子包,...

    jdom+rome JAR包

    1. **读取XML文件**:通过SAX或DOMBuilder,JDOM可以从XML文件中构建一个Document对象。 2. **创建XML文档**:利用Element、Attribute等类,可以方便地构建XML文档结构。 3. **修改XML文档**:找到特定的元素或属性...

    可以用的jdom+rome.jar

    JDOM和ROME的结合使用,可以实现从XML文档中提取RSS Feed,然后通过ROME解析这些Feed,提取出文章标题、描述、链接等信息,甚至可以进一步处理这些信息,比如存入数据库或进行数据分析。这样的组合,为开发者提供了...

    rome-0.9.jar

    "rome-license.txt"则包含了Rome库的许可协议,这是开源软件中常见的文件,通常会声明软件的使用、修改和分发的条件。对于开发者来说,了解并遵守这些许可协议是使用开源库的必要步骤,以确保符合法律和道德规范。 ...

    rome-1.0.jar.zip

    "rome-license.txt" 文件通常包含开源软件的许可协议,它规定了用户可以如何使用、修改和分发该软件。对于罗马库来说,这个文件可能指定了Apache License 2.0、MIT License或其他开放源代码许可证,这些许可证允许...

    rome-1.0RC2rss解析

    2. **XML绑定**:Rome使用了JAXB(Java Architecture for XML Binding)来实现XML与Java对象之间的映射。这使得从XML到Java对象的转换变得简单,反之亦然。开发者只需要定义好对应的Java模型类,Rome就能自动进行...

    RSS开源框架ROME1.0下载集合

    这两个文件分别提供了库的二进制版本和源代码,使得开发者可以选择使用或研究这个库来扩展RSS处理能力。 **应用场景** - **RSS阅读器**:使用ROME和rsslib4j,开发者可以创建自己的RSS阅读器应用,让用户能够订阅...

    Rss,Atom聚合规范的XML文件解析(Rome,rssutils)

    1. 解析XML文件:使用`RomeFeedReader`类,可以读取XML文件并将其转换为Rome模型对象。 2. 创建feed:通过` SyndFeedImpl `类,可以构建一个新的RSS或Atom feed。 3. 添加条目:`SyndEntryImpl`用于表示单个条目,...

    rome源码包和jar包

    - 使用`SyndFeedInput`可以从URL或XML字符串中读取feed。 - 解析后的feed可以通过`SyndFeed`对象进行访问,获取新闻标题、描述、链接、作者等信息。 - 对于百度RSS新闻的不同栏目,可以通过遍历`SyndFeed`的子项`...

    利用Rome解析Rss

    Rome 的主要功能包括解析器和生成器,解析器可以从一个网址、一个本地文件或文件流中读取转换数据,而生成器可以将 SyndFeed 对象输出成程序所指定的数据格式。SyndFeed 是 Rome 提供的一个中间对象,包括了源数据中...

    Rome使用简单说明二(部分关键源码分析)

    《Rome使用简单说明二(部分关键源码分析)》 在Java开发中,Rome是一个用于处理RSS和Atom feeds的开源库。它提供了一系列的API,使得开发者能够轻松地读取、创建和更新这些标准格式的feed。本文将重点探讨Rome库中的...

    时间插件ROME

    2. **示例或测试文件**:这些文件演示了如何在实际项目中引入和使用ROME插件,有助于开发者快速理解和应用。 - `index.html`:可能是一个简单的示例页面,展示如何在HTML中调用插件。 - `example.js`:可能包含...

    rome 实现rss订阅,中文出错解决方法

    本文将深入探讨如何解决使用Rome处理RSS订阅时遇到的中文出错问题。 首先,我们需要理解问题的根源。在处理XML文件(如RSS feed)时,编码问题通常与字符集设置有关。RSS规范通常要求XML文档声明一个字符编码,如...

    jdom+rome-0.9 jar包合集

    首先,使用JDOM构建XML结构,然后用ROME的API将其转换成RSS格式。例如,可以先使用JDOM创建一个`Document`对象,然后添加`Element`来表示RSS feed的基本信息,如频道(channel)、标题、描述等。接着,为每个内容项...

    RSS.zip_Rome.jar_java r_java rss_rss feed jar_rss java

    这可能是几个独立的Java类或一个完整的项目,展示了如何使用Rome来读取、创建和管理RSS源。 标签“rome.jar java_r java_rss rss_feed_jar rss_java”进一步确认了这个资源包的核心内容:Rome库的jar文件,以及与...

    rome,用于rss和atom提要的java库.zip

    你可以通过它们读取XML文件或从URL获取feed,并将其转换为Java对象进行处理。 - `SyndFeed`: 表示RSS或Atom feed的模型类,包含了feed的所有元数据和条目(entries)。 - `SyndEntry`: 表示feed中的单个条目,包括...

Global site tag (gtag.js) - Google Analytics